DB2的備份和恢復是DBA都需要重點關注的部分,其中在聯機方式下完成啟用了前滾恢復方式的DB2備份操作,當需要進行表空間集的恢復操作時,需要執行RESTORE和ROLLFORWARD 命令完成恢復操作。
對於啟用了前滾恢復方式(使用歸檔日志模式)的 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,與上述兩種方法返回的結果一致。