|
使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来进行跨节点恢复
下列示例说明如何使用 db2adutl 命令以及 logarchopt1 和 vendoropt 数据库配置参数来执行跨节点恢复。
在下列示例中,计算机 1 名为 bar,它正在运行 AIX?。此机器的所有者是 roecken。bar 上的数据库名为 zample。计算机 2 名为 dps。此机器也在运行 AIX 并由 regress9 所拥有。
PASSWORDACCESS = generate
计算机 1
设置数据库以便将日志归档至 TSM。更新 zample 数据库的数据库配置参数 logarchmeth1:
bar:/home/roecken> db2 update db cfg for zample using LOGARCHMETH1 tsm
将返回以下信息:
成功完成 DB20000I UPDATE DATABASE CONFIGURATION 命令。
注:
在更新数据库配置之前,可能需要对数据库进行脱机备份。
强制应用程序断开连接:
db2 force applications all
验证是否已强制所有应用程序断开连接:
db2 list applications
您应该接收到一条消息,说明未返回任何数据。
注:
在分区数据库环境中,必须对所有数据库分区都执行此步骤。
备份数据库:
db2 backup db zample use tsm
将返回类似以下的信息:
备份成功。此备份映像的时间戳记是:20040216151025
注:
在分区数据库环境中,必须对所有数据库分区都执行此步骤。根据您正在执行联机备份还是脱机备份,在数据库分区上执行此步骤的顺序有所不同。有关更多信息,请参阅使用备份。
连接至 zample 数据库,然后在该数据库中创建一个表。
将数据装入新表中。在此示例中,表名为 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
要启用跨节点恢复,必须为另一个节点和帐户提供对 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 数据库。
将 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”上丢失了日志文件。
要强制 rollforward 实用程序查找另一台机器上的日志文件,必须配置正确的 logarchopt 值,在此情况下,为 logarchopt1 数据库配置参数:
dps:/home/regress9> db2 update db cfg for zample using logarchopt1
"'-fromnode=bar -fromowner=roecken'"
要使 rollforward 实用程序能够使用装入副本映像,还必须设置 vendoropt 数据库配置参数:
dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
"'-fromnode=bar -fromowner=roecken'"
现在,可以对 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
如果该数据库不存在,则创建空的 zample 数据库。如果 zample 数据库已存在,则可以跳过此步骤和用来更新数据库配置的下面两个步骤。
dps:/home/regress9> db2 create db zample
更新 zample 数据库的数据库配置参数 tsm_nodename:
dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
更新 zample 数据库的数据库配置参数 tsm_password:
dps:/home/regress9> db2 update db cfg for zample using tsm_password ********
复原 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”,前滚恢复已停止。
因为数据库复原操作替换了数据库配置文件,所以必须将 TSM 数据库配置值设置为正确的值。首先,必须复位 tsm_nodename 配置参数:
dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
必须复位 tsm_password 数据库配置参数:
dps:/home/regress9> db2 update db cfg for zample using tsm_password *******
必须复位 logarchopt1 数据库配置参数,以便 rollforward 实用程序可以找到正确的日志文件:
dps:/home/regress9> db2 update db cfg for zample using logarchopt1
"'-fromnode=bar -fromowner=roecken'"
还必须复位 vendoropt 数据库配置参数,以便还可以使用装入恢复文件:
dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
"'-fromnode=bar -fromowner=roecken'"
当设置数据库配置参数时,可以对数据库进行前滚:
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 命令。 |
|