DB2表空間前滾恢復(fù)操作最小恢復(fù)時(shí)間戳記的三方法
DB2的備份和恢復(fù)是DBA都需要重點(diǎn)關(guān)注的部分,其中在聯(lián)機(jī)方式下完成啟用了前滾恢復(fù)方式的DB2備份操作,當(dāng)需要進(jìn)行表空間集的恢復(fù)操作時(shí),需要執(zhí)行RESTORE和ROLLFORWARD 命令完成恢復(fù)操作。
對(duì)于啟用了前滾恢復(fù)方式(使用歸檔日志模式)的 DB2 數(shù)據(jù)庫(kù),如果備份操作是在聯(lián)機(jī)方式下完成的,當(dāng)需要進(jìn)行表空間集的恢復(fù)操作時(shí),在執(zhí)行了 RESTORE 命令之后,還必須執(zhí)行 ROLLFORWARD 命令以前滾表空間完成其恢復(fù)操作。為保證表空間前滾操作的成功,前滾的時(shí)間點(diǎn)必須大于或等于表空間前滾操作所需的最小恢復(fù)時(shí)間戳記,這里提供了三種獲取該時(shí)間戳記的方法:
1. 當(dāng)前滾命令所給的時(shí)間戳小于最小恢復(fù)時(shí)間戳記時(shí),前滾命令將無(wú)法進(jìn)行,并提示前滾最小恢復(fù)時(shí)間戳,如:
db2 "rollforward db sample to 2005-05-28-12 using local time tablespace (userspace1)"
SQL1275N 前滾的停止時(shí)間必須大于或等于 "2006-05-28-00.23.21.000000",因?yàn)楣?jié)點(diǎn) "0" 上的數(shù)據(jù)庫(kù) "SAMPLE" 中包含比指定時(shí)間更新的信息。
該命令的返回信息表明 USERSPACE1 表空間完成前滾操作的最小恢復(fù)時(shí)間戳必須大于或等于 2006-05-28-00.23.21.000000。由于前滾命令中使用了 USING LOCAL TIME,該時(shí)間戳記即為本地時(shí)間。
2. 通過(guò)查詢(xún) SNAPSHOT_TBS_CFG 表函數(shù)中 MIN_RECOVERY_TIME 字段的值,返回表空間前滾最小恢復(fù)時(shí)間戳(為本地時(shí)間):
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 表空間的前滾最小恢復(fù)時(shí)間戳為“2006-05-28-00.23.21.000000”。
3. 通過(guò)表空間的快照輸出,獲取其前滾最小恢復(fù)時(shí)間戳記(為標(biāo)準(zhǔn)世界時(shí)(Coordinated Universal Time,UTC)),如:
db2 get snapshot for tablespaces on sample
表空間名 = USERSPACE1
表空間標(biāo)識(shí) = 2
......
最小恢復(fù)時(shí)間 = 2006-05-27 16:23:21.000000
將返回的最小恢復(fù)時(shí)間戳加上 8 個(gè)小時(shí),轉(zhuǎn)換為本地時(shí)間戳記,同樣為 2006-05-28 00.23.21.000000,與上述兩種方法返回的結(jié)果一致。