问:当用户利用 Veritas Netbackup 提供的用户出口程序备份 DB2 数据库的归档日志文件时,有时失败,查看 db2diag.log 文件,发现其中有类似以下错误信息:ADM1833E The user exit program returned an error when archiving log file "S0000015.LOG" from "C:DB2NODE0000SQL00002SQLOGDIR" for database "SAMPLE". The error code was "8".
答:Veritas NetBackup for DB2 除为 DB2 用户提供了其用户出口程序 db2uext2.exe,同时还提供了一个相应的配置文件,其中包含了有关 NetBackup 的各种设置,例如策略、调动及所使用的数据库等,这些设置将为库文件和用户出口程序所使用。该文件名为 db2.conf,分别位于:
Windows 平台:
Unix 平台:
发生上述 ADM1833E 的错误就是由于该文件中数据库名称设置不正确所引起的。下面以一个 db2.conf 文件举例进行说明。
# # The following settings are used by NetBackup to backup/restore a DB2 database. # # Reminders: # 1) The specified policy must have a type of "DB2". # 2) The specified schedule must be defined for this policy. # 3) The DB2 database host must be entered as a client for this policy. # OBJECTTYPE DATABASE DATABASE SAMPLE POLICY DB2_DB_Policy SCHEDULE Default-Application-Backup # # The following settings are used by NetBackup to backup/restore DB2 log files. # # Reminders: # 1) The specified policy must have a type of "Standard" (for UNIX DB2 host) or # "MS-Windows-NT" (for Windows DB2 host). # 2) The specified schedule must be defined for this policy. # 3) The DB2 database host must be entered as a client for this policy. # # If DB2 log file archiving is enabled (DB2 USEREXIT ON), DB2 will invoke # the NetBackup user-exit program to backup & restore DB2 archive log files. # Using ARCFUNC SAVE causes log files to be archived to NetBackup storage, # as specified by the policy. # Using ARCFUNC COPY causes log files to be archived to a disk directory. # Use ARCDIR to specify the destination directory for log file backup. # Use RETDIR to specify the source directory for log file restore. # OBJECTTYPE ARCHIVE DATABASE SAMPLE POLICY DB2_Log_Policy SCHEDULE User ARCFUNC SAVE #ARCFUNC COPY #ARCDIR /home/db2inst1/arcdir #RETDIR /home/db2inst1/arcdir ENDOPER |
假设用户要利用 NetBackup 备份名称为 SAMPLE 的数据库及其归档日志。在上述 db2.conf 文件中有两段配置内容,分别配置了两个支持的策略:DB2_DB_Policy 和 DB2_Log_Policy。第一段内容配置的 DB2_DB_Policy 在 NetBackup 中用作数据库的备份策略,其调度方式为应用程序备份调度;而第二段内容配置的 DB2_Log_Policy 在 NetBackup 中用作归档日志文件的备份策略,其调度方式为用户备份调度,以表明该备份是由 NetBackup 位于 Windows 客户端上的用户出口程序发起的一个用户备份操作。
然而,DB2 的数据库 BACKUP 备份命令使用的是数据库别名来标识数据库,而对于用户出口程序 db2uext2,其调用参数为:
db2uext2 -OS
其中:
os = 操作系统
release = DB2 的发行版本
request = 'ARCHIVE' 或 'RETRIEVE' - 归档或恢复操作
dbname = 数据库名称
nodenumber = 节点号
logpath = 日志文件路径
logname = 日志文件名称
可见,db2uext2 是用数据库名称对数据库进行标识的。
如果数据库 SAMPLE 的别名为 SAMPLEABC,我们将上述 db2.conf 文件中的两个 “DATABASE”参数都改为使用别名:SAMPLEABC,则数据库的备份可成功完成,但当进行到日志文件的备份时就会产生下述信息:
03:56:42.972 ^3112.3104] <2> ParseArguments: INF - operating system = NT 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - DB2 release = SQL08010 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - user exit request = ARCHIVE 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - Database name = SAMPLE 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - node number = NODE0000 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - log file path = C:DB2NODE0000SQL00002SQLOGDIR 03:56:42.972 ^3112.3104] <2> ParseArguments: INF - log file name = S0000014.LOG : : 03:56:42.972 ^3112.3104] <4> db2_readConfig2: sDb2ConfPath = 03:56:42.972 ^3112.3104] <2> db2_readConfig2: INF - Searching for database = SAMPLE, ōbjecttype = ARCHIVE 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : DATABASE SAMPLEABC 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : OBJECTTYPE DATABASE 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : POLICY DB2_DB_POLICY 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : SCHEDULE Default-Application-Backup 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : ENDOPER 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - Continue search 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : DATABASE SAMPLEABC 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : OBJECTTYPE ARCHIVE 03:56:42.972 ^3112.3104] <4> db2_readConfig2: << File: graycol.gif >> NF - db2.conf line : POLICY DB2_Log_Policy 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : SCHEDULE db2_archive_sched 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : ARCFUNC SAVE 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - db2.conf line : ENDOPER 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - Continue search 03:56:42.972 ^3112.3104] <4> db2_readConfig2: INF - Exiting db2_readConfig2 of status=<380> 03:56:42.972 ^3112.3104] <16> db2_backupArchiveLog: ERR - db2_readConfig failed with <380> status 03:56:42.972 ^3112.3104] <8> db2uext2: WRN - ARCHIVE status=<380> 03:56:42.972 ^3112.3104] <16> db2uext2: ERR - ARCHIVE FAILED: C:DB2NODE0000SQL00002SQLOGDIRS0000014.LOG 03:56:42.972 ^3112.3104] <4> db2uext2: INF - DB2 will retry later 03:56:42.972 ^3112.3104] <2> db2uext2: Check DB2 db2diag.log for details 03:56:42.972 ^3112.3104] <4> db2uext2: INF --- END USEREXIT, STATUS = 8 |
而查看 db2diag.log 时,便会发现以下报错:
ADM1833E The user exit program returned an error when archiving log file "S0000015.LOG" from "C:DB2NODE0000SQL00002SQLOGDIR" for database "SAMPLE". The error code was "8".
从上面的报错中可以看到,虽然在 db2.conf 文件中指定的是数据库别名,用户出口程序仍然能够发现其对于的原数据库名称,并由于对“DATABASE”参数给出的是数据库别名而非数据库名称而最终导致了上述问题,从而使利用 NetBackup 进行的备份操作失败。
因此,在对于 Veritas Netbackup 的 db2.conf 进行设置时,应使用数据库名称设置“DATABASE”参数,而不能使用数据库别名,以免用户出口程序在备份 DB2 数据库的归档日志文件时失败。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论