分类:
2009-07-11 14:57:04
原文地址:
产品:DB2 UDB
平台:跨平台
版本:V8.2,V8.3
本文提供了获取 DB2 数据库表空间前滚恢复操作的所要求最小恢复时间戳记的三种方法。
对于启用了前滚恢复方式(使用归档日志模式)的 DB2 数据库,如果备份操作是在联机方式下完成的,当需要进行表空间集的恢复操作时,在执行了 RESTORE 命令之后,还必须执行 ROLLFORWARD 命令以前滚表空间完成其恢复操作。为保证表空间前滚操作的成功,前滚的时间点必须大于或等于表空间前滚操作所需的最小恢复时间戳记,这里提供了三种获取该时间戳记的方法:
1. 当前滚命令所给的时间戳小于最小恢复时间戳记时,前滚命令将无法进行,并提示前滚最小恢复时间戳,如:
db2 "rollforward db sample to 2005-05-28-12 using local time tablespace (userspace1)"
SQL1275N 前滚的停止时间必须大于或等于 "2006-05-28-00.23.21.000000",因为节点 "0" 上的数据库 "SAMPLE" 中包含比指定时间更新的信息。
该命令的返回信息表明 USERSPACE1 表空间完成前滚操作的最小恢复时间戳必须大于或等于 2006-05-28-00.23.21.000000。由于前滚命令中使用了 USING LOCAL TIME,该时间戳记即为本地时间。
2. 通过查询 SNAPSHOT_TBS_CFG 表函数中 MIN_RECOVERY_TIME 字段的值,返回表空间前滚最小恢复时间戳(为本地时间):
db2 "select substr(tablespace_name,1,15) as tablespace_name, min_recovery_time from table (snapshot_tbs_cfg('SAMPLE',-1) ) as a"
TABLESPACE_NAME MIN_RECOVERY_TIME
SYSCATSPACE -
TEMPSPACE1 -
USERSPACE1 2006-05-28-00.23.21.000000
SYSTOOLSPACE 2006-05-12-13.02.11.000000
4 条记录已选择。
其中 USERSPACE1 表空间的前滚最小恢复时间戳为“2006-05-28-00.23.21.000000”。
3. 通过表空间的快照输出,获取其前滚最小恢复时间戳记(为标准世界时(Coordinated Universal Time,UTC)),如:
db2 get snapshot for tablespaces on sample
表空间名 = USERSPACE1
表空间标识 = 2
......
最小恢复时间 = 2006-05-27 16:23:21.000000
将返回的最小恢复时间戳加上 8 个小时,转换为本地时间戳记,同样为 2006-05-28 00.23.21.000000,与上述两种方法返回的结果一致。
-------------------------------------------------------------------
备注:其实用db2 list tablespaces show detail中也可以看到,是UTC时间。
或者用db2 list history backup all for dbname 可以看出备份情况,用来作为对最小恢复时间戳的参考,之所以说是参考,是因为当对表空间或表空间的表运行ddl语句时,最小时间点将被更新。
另外:补充两个命令的用法:
1. db2ckbkp -h 备份映像文件
--可以用来检查db2数据库备份文件的完整性,还可以查看一些有用信息
--backupmode: 0是脱机备份 1是联机备份
--backup type:0是数据库备份 3 是表空间备份
--backup gran:0 正常备份 16是增量备份 48是差异备份
2. db2ckrst -d dbname -t 时间戳 -r database
--用来列出需要增量恢复时的步骤