ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来进行跨节点恢复

使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来进行跨节点恢复

原创 Linux操作系统 作者:lenx2000 时间:2011-03-14 22:49:49 0 删除 编辑

使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来进行跨节点恢复

下列示例说明如何使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来执行跨节点恢复。

在下列示例中,计算机 1 名为 bar,它正在运行 AIX®。此机器的所有者是 roecken。bar 上的数据库名为 zample。计算机 2 名为 dps。此机器也在运行 AIX 并由 regress9 所拥有。

PASSWORDACCESS = generate
计算机 1
  1. 设置数据库以便将日志归档至 TSM。更新 zample 数据库的数据库配置参数 logarchmeth1
          bar:/home/roecken> db2 update db cfg for zample using LOGARCHMETH1 tsm

    将返回以下信息:

       成功完成 DB20000I UPDATE DATABASE CONFIGURATION 命令。
    注:
    在更新数据库配置之前,可能需要对数据库进行脱机备份。
  2. 强制应用程序断开连接:
          db2 force applications all
  3. 验证是否已强制所有应用程序断开连接:
        db2 list applications
    您应该接收到一条消息,说明未返回任何数据。
    注:
    在分区数据库环境中,必须对所有数据库分区都执行此步骤。
  4. 备份数据库:
          db2 backup db zample use tsm

    将返回类似以下的信息:

       备份成功。此备份映像的时间戳记是:20040216151025

    注:
    在分区数据库环境中,必须对所有数据库分区都执行此步骤。必须先备份目录分区,然后可以同时备份所有其他数据库分区。
  5. 连接至 zample 数据库,然后在该数据库中创建一个表。
  6. 将数据装入新表中。在此示例中,表名为 a,从定界 ASCII 文件中装入的数据为 mr。指定了 COPY YES 选项来生成装入的数据的副本,并且 USE TSM 选项指定数据的副本存储在 Tivoli® Storage Manager 上。
    注:
    仅当数据库启用了前滚恢复功能时才能指定 COPY YES 选项;即,必须将 logarchmeth1 数据库配置参数设置为 USEREXIT 或 LOGRETAIN。
       bar:/home/roecken> db2 load from mr of del modified by noheader replace
       into a copy yes use tsm

    实用程序返回了一系列消息来指示它的进度:

          SQL3109N  实用程序正开始从“/home/roecken/mr”文件中装入数据。
    
       SQL3500W  实用程序在“02/16/2004 15:12:13.392633”时进入“装入”阶段。
       SQL3519W  开始装入一致点。输入记录数 =“0”。
    
       SQL3520W  装入一致点成功。
    
       SQL3110N  实用程序已完成处理。从输入文件读取了“1”行。
    
    
       SQL3519W  开始装入一致点。输入记录数 =“1”。
    
       SQL3520W  装入一致点成功。
    
       SQL3515W  实用程序在“02/16/2004 15:12:13.445718”时已完成“装入”阶段。
       读取的行数        = 1
       跳过的行数        = 0
       装入的行数        = 1
       拒绝的行数        = 0
       删除的行数        = 0
       落实的行数        = 1

    现在,在 TSM 上应该具有一个备份映像、一个装入副本映像和一个日志文件。可以按如下所示对 zample 数据库运行查询:

          bar:/home/roecken/sqllib/adsm> db2adutl query db zample

    将返回以下信息:

          正在检索 FULL DATABASE BACKUP 信息。
         1 时间:20040216151025  最早的日志:S0000000.LOG  数据库分区号:0    会话数:1
       正在检索 INCREMENTAL DATABASE BACKUP 信息。
         找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像
    
    
       正在检索 DELTA DATABASE BACKUP 信息。
         找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像
    
    
       正在检索 TABLESPACE BACKUP 信息。
         找不到 ZAMPLE 的 TABLESPACE BACKUP 映像
    
    
       正在检索 INCREMENTAL TABLESPACE BACKUP 信息。
         找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像
    
    
       正在检索 DELTA TABLESPACE BACKUP 信息。
         找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像
    
    
       正在检索 LOAD COPY 信息。
           1 时间: 20040216151213
    
    
       正在检索 LOG ARCHIVE 信息。
          日志文件:S0000000.LOG,链号:0,数据库分区号:0 生成时间:2004-02-16-15.10.38
  7. 要启用跨节点恢复,必须为另一个节点和帐户提供对 bar 计算机上的对象的访问权。 在此示例中,对 dps 节点和 regress9 用户提供了访问权。
          bar:/home/roecken/sqllib/adsm> db2adutl grant user regress9 
          on nodename dps for db zample

    将返回以下信息:

       成功添加了 regress9 访问 dps 节点上的 ZAMPLE 的许可权。

    要查询 db2adutl grant 操作的结果,发出以下命令:

          bar:/home/roecken/sqllib/adsm> db2adutl queryaccess

    将返回以下信息:

       节点                 用户名             数据库名称   类型
       --------------------------------------------------------------
       DPS                  regress9             ZAMPLE          A
       --------------------------------------------------------------
        访问类型:  B - 备份映像   L - 日志   A - 同时使用这两种访问类型
PASSWORDACCESS = 生成环境
计算机 2

尚未设置第 2 台计算机 dps。在 dps 上对 zample 数据库的 db2adutl 查询返回了下列结果:

      dps:/home/regress9/sqllib/adsm> db2adutl query db zample       
   --- 数据库目录是空的 ---
   警告:在 ADSM 服务器上 DB2 没有创建文件空间
   警告:在 ADSM 中找不到任何别名的 DB2 备份映像。


   dps:/home/regress9/sqllib/adsm> db2adutl query db zample nodename 
       bar owner roecken
   --- 数据库目录是空的 ---

   对 ZAMPLE 数据库的查询


   正在检索 FULL DATABASE BACKUP 信息。
     1 时间:20040216151025  最早的日志:S0000000.LOG  数据库分区号:0    会话数:1
   正在检索 INCREMENTAL DATABASE BACKUP 信息。
     找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像


   正在检索 DELTA DATABASE BACKUP 信息。
     找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像


   正在检索 TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 TABLESPACE BACKUP 映像


   正在检索 INCREMENTAL TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像


   正在检索 DELTA TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像


   正在检索 LOAD COPY 信息。
       1 时间: 20040216151213


   正在检索 LOG ARCHIVE 信息。
      日志文件:S0000000.LOG,链号:0,数据库分区号:0 生成时间:2004-02-16-15.10.38

在 dps 计算机上尚不存在 zample 数据库。

  1. 将 zample 数据库复原至 dps 计算机:
    dps:/home/regress9> db2 restore db zample use tsm options
       "'-fromnode=bar -fromowner=roecken'" without prompting
    

    将返回以下信息:

       DB20000I  RESTORE DATABASE 命令成功完成。
    注:
    如果 dps 上已经存在 zample 数据库, 则将省略 OPTIONS 参数,并且将使用数据库配置参数 vendoropt。 此配置参数会覆盖备份或复原操作的 OPTIONS 参数。

    对 zample 数据库的前滚操作将失败, 原因是 rollforward 实用程序找不到日志文件。前滚操作如下所示:

       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    将返回以下错误:

       SQL4970N  数据库“ZAMPLE”上的前滚恢复不能达到指定的停止点(日志结束或时间点),原因是在节点“0”上丢失了日志文件。
  2. 要强制 rollforward 实用程序查找另一台机器上的日志文件, 必须配置正确的 logarchopt 值, 在此情况下,为 logarchopt1 数据库配置参数:
          dps:/home/regress9> db2 update db cfg for zample using logarchopt1
       "'-fromnode=bar -fromowner=roecken'"
  3. 要使 rollforward 实用程序能够使用装入副本映像,还必须设置 vendoropt 数据库配置参数:
          dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
       "'-fromnode=bar -fromowner=roecken'"
  4. 现在,可以对 zample 数据库进行前滚了:
       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    将返回以下信息:

                                        前滚状态
    
       输入数据库别名                   = zample
       返回了状态的节点数               = 1
    
       节点号                           = 0
       前滚状态                         = 未暂挂
       要读取的下一个日志文件           =
       已处理的日志文件                 = S0000000.LOG - S0000000.LOG
       上次落实的事务                   = 2004-02-16-20.10.38.000000 UTC
    
      DB20000I  ROLLFORWARD 命令成功完成。  
PASSWORDACCESS = 提示环境

在“提示”环境中,需要额外的信息,尤其是创建了对象的机器的 TSM 节点名和密码。

对于 db2adutl,更新 dsm.sys 文件(在基于 Windows 的平台上称为 dsm.opt 文件)并将 NODENAME bar(因为 bar 是源计算机的名称)添加至服务器子句:

   dps:/home/regress9/sqllib/adsm> db2adutl query db zample nodename bar 
   owner roecken password *******

将返回以下信息:

      对 ZAMPLE 数据库的查询


   正在检索 FULL DATABASE BACKUP 信息。
     1 时间:20040216151025  最早的日志:S0000000.LOG  数据库分区号:0    会话数:1
   正在检索 INCREMENTAL DATABASE BACKUP 信息。
     找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像


   正在检索 DELTA DATABASE BACKUP 信息。
     找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像


   正在检索 TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 TABLESPACE BACKUP 映像


   正在检索 INCREMENTAL TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像


   正在检索 DELTA TABLESPACE BACKUP 信息。
     找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像


   正在检索 LOAD COPY 信息。
       1 时间: 20040216151213


   正在检索 LOG ARCHIVE 信息。
      日志文件:S0000000.LOG,链号:0,数据库分区号:0 生成时间:2004-02-16-15.10.38
  1. 如果该数据库不存在,则创建空的 zample 数据库。如果 zample 数据库已存在,则可以跳过此步骤和用来更新数据库配置的下面两个步骤。
       dps:/home/regress9> db2 create db zample
  2. 更新 zample 数据库的数据库配置参数 tsm_nodename
       dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
  3. 更新 zample 数据库的数据库配置参数 tsm_password
       dps:/home/regress9> db2 update db cfg for zample using tsm_password ********
  4. 复原 zample 数据库:
       dps:/home/regress9> db2 restore db zample use tsm options
       "'-fromnode=bar -fromowner=roecken'" without prompting
    

    成功完成复原操作,但是发出了一条警告:

       SQL2540W  复原成功,但是在以“无中断”方式进行处理时,在“数据库复原”期间遇到了警告“2523”。

    此时,rollforward 实用程序又找不到正确的日志文件:

       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    将返回以下错误消息:

       SQL1268N  由于检索节点“0”上的数据库“ZAMPLE”的日志文件“S0000000.LOG”时发生错误“-2112880618”,前滚恢复已停止。
  5. 因为数据库复原操作替换了数据库配置文件, 所以必须将 TSM 数据库配置值设置为正确的值。首先,必须复位 tsm_nodename 配置参数:
       dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
  6. 必须复位 tsm_password 数据库配置参数:
       dps:/home/regress9> db2 update db cfg for zample using tsm_password *******
  7. 必须复位 logarchopt1 数据库配置参数,以便 rollforward 实用程序可以找到正确的日志文件:
       dps:/home/regress9> db2 update db cfg for zample using logarchopt1
       "'-fromnode=bar -fromowner=roecken'"
  8. 还必须复位 vendoropt 数据库配置参数,以便还可以使用装入恢复文件:
       dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
       "'-fromnode=bar -fromowner=roecken'"
  9. 当设置数据库配置参数时,可以对数据库进行前滚:
       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    对 zample 数据库运行 ROLLFORWARD QUERY STATUS 命令将显示以下结果:

                                        前滚状态
    
       输入数据库别名                   = zample
       返回了状态的节点数               = 1
    
       节点号                           = 0
       前滚状态                         = 未暂挂
       要读取的下一个日志文件           =
       已处理的日志文件                 = S0000000.LOG - S0000000.LOG
       上次落实的事务                   = 2004-02-16-20.10.38.000000 UTC
    
      DB20000I  ROLLFORWARD 命令成功完成。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134849/viewspace-689441/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-19

  • 博文量
    155
  • 访问量
    482388