db2china
作者db2china·2007-06-28 18:38
编辑·北京传诚科技有限公司

备份时遇到ADM1833E的报错?

字数 5951阅读 4012评论 0赞 1

  问:当用户利用 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 平台:

  NetBackupdbextdb2

  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 -RL -RQ -DB -NN -LP -LN

  其中:

  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 条评论

Ctrl+Enter 发表

作者其他文章

  • 风景01
    评论 0 · 赞 0
  • 奇瑞管理的的幕后故事
    评论 0 · 赞 0
  • 风景21
    评论 0 · 赞 0
  • 风景29
    评论 0 · 赞 0
  • 风景02
    评论 0 · 赞 0
  • X社区推广