nbu备份db2数据库6号错误解决案例

  NBU在备份一台AIX服务器上的DB2数据库时,报6号错误。

  报错截图:

174029975.jpg


165523263.jpg

在AIX服务器上运行备份脚本,具体报错信息如下:

Executing: db2 BACKUP DATABASE BJMOA4 ONLINE  LOAD /usr/openv/netbackup/bin/nbdb2.sl64 OPEN 4 SESSIONS BUFFER 1024

SQL2071N  An error occurred while accessing the shared library

"/usr/openv/netbackup/bin/nbdb2.sl64". Reason code: "2".

一、分析检查

1、检查SQL2071N

$ db2 ? SQL2071N


SQL2071N An error occurred while accessing the shared library

         "<shr-lib-name>". Reason code: "<reason-code>"

Explanation:

An unexpected error occurred while accessing a vendor shared

library during the processing of a database utility.  The

following is a list of reason codes:

1 An invalid shared library path was encountered.

2 An attempt to load the backup shared library failed.

3 An error was encountered while unloading the shared library.  

The utility stops processing.

User Response:

Ensure the shared library provided is valid and resubmit the

utility command or use another supported media.  


2、分析共享库的载入

# ldd /usr/openv/netbackup/bin/nbdb2.sl64

/usr/openv/netbackup/bin/nbdb2.sl64 needs:

        /usr/openv/lib/libxbsa64.so

        /usr/openv/lib/libVcvcomb64_noul.so

        /usr/lib/libc.a(shr_64.o)

        /usr/lib/libdl.a(shr_64.o)

        /unix

        /usr/lib/libcrypt.a(shr_64.o)

使用LDD命令可显示所依赖的动态连接库的尽可能的详细信息

根据提示去检查列出的文件是否都存在,如果不存在可以从其他正常可备份的机器上拷贝。

3、分析CODE 2

#cat /usr/include/sys/errno.h

#define EPERM   1       /* Operation not permitted              */

#define ENOENT  2       /* No such file or directory            */

#define ESRCH   3       /* No such process                      */

#define EINTR   4       /* interrupted system call              */

#define EIO     5       /* I/O error                            */

#define ENXIO   6       /* No such device or address            */

#define E2BIG   7       /* Arg list too long                    */

#define ENOEXEC 8       /* Exec format error                    */

#define EBADF   9       /* Bad file descriptor                  */

#define ECHILD  10      /* No child processes                   */

#define EAGAIN  11      /* Resource temporarily unavailable     */

#define ENOMEM  12      /* Not enough space                     */

#define EACCES  13      /* Permission denied                    */

#define EFAULT  14      /* Bad address                          */

#define ENOTBLK 15      /* Block device required                */

根据提示,可推断没有找到相关文件或路径不正确

4、分析DB2diag.log文件

DATA #3 : String, 265 bytes

       0509-022 Cannot load module /usr/openv/netbackup/bin/nbdb2.sl64(shr.o).

       0509-153   File /usr/openv/netbackup/bin/nbdb2.sl64 is not an archive or

                  the file could not be read properly.

FUNCTION: DB2 UDB, database utilities, sqlubcka, probe:140

MESSAGE : Backup Terminated.

根据以上的分析,可确知归档目录读取不正确

5、检查当前数据库是否开启归档

$ db2 get db cfg for bjtt4|grep -i log

Log retain for recovery enabled             (LOGRETAIN) = RECOVERY

User exit for logging enabled                (USEREXIT) = OFF

HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC

First log archive method                 (LOGARCHMETH1) = LOGRETAIN

发现设置了归档,但归档目录没指定

二、解决问题

$db2 update db cfg for bjtt4 using LOGARCHMETH1 "disk:/archive/db2log"
运行后结果如下:
Log retain for recovery enabled             ( LOGRETAIN) = RECOVERY
User exit for logging enabled                (USEREXIT) = OFF
HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC

First log archive method                 (LOGARCHMETH1) =DISK:/archivelog/db2log/

这个参数修改后,需要重启数据库才能生效。

重启后,发现问题已解决,可以重新正常备份了。


另外如果你是在做数据库恢复时,遇到这样的问题

例如:RESTORE DATABASE EPD FROM /db2 TAKEN AT 20130525112121 TO /db2/EPP INTO EPP NEWLOGPATH /db2/EPP/log_dir/ WITH 2


BUFFERS BUFFER 1024 REDIRECT

SQL2529W  Warning!  Restoring to an existing database that is different from the backup image database, and the alias name "EPP" of the existing database does not match the alias name "EPD" of the backup image, and the database name "EPP" of the existing database does not match the database name "EPD" of the backup image. The target database will be overwritten by the backup version. The Roll-forward recovery logs associated with the target database will be deleted.

Do you want to continue ? (y/n) y

SQL2071N  An error occurred while accessing the shared library

"/db2/EPP/db2EPP/NODE0000/SQL00001/libdb2compr.a". Reason code: "2".


可以在恢复脚本上增加以下参数即可:

COMPRLIB  /db2/db2EPP/sqllib/lib/libdb2compr.a


补充:

SQL2071N  An error occurred while accessing the shared library

"/usr/openv/netbackup/bin/nbdb2.sl64". Reason code: "2".

这个问题的另外一种原因就是你的服务器如果装的是32位的NBU客户端,则不能使用nbdb2.sl64这个文件,而应该在脚本中指明使用nbdb2.sl这个32位的文件。这个问题跟你的服务器是64位的无关。

(# Change MY_LIB to the correct NetBackup library name for your host:

 #       Solaris or Linux 32-bit  = nbdb2.so

 #       Solaris 64-bit           = nbdb2.so64

 #       AIX or HPUX 32-bit       = nbdb2.sl

 #       AIX or HPUX 64-bit       = nbdb2.sl64)


本文出自 “滴水穿石孙杰” 博客,谢绝转载!

你可能感兴趣的:(NBU备份,db2数据库)