前滾會話 - CLP 示例
示例 1
ROLLFORWARD DATABASE 命令允許每次指定多個操作,各個操作由關鍵字 AND 隔開。例如,要前滾至日誌末尾,然後完成,可將下列獨立的命令:
db2 rollforward db sample to end of logs
db2 rollforward db sample complete
組合爲:
db2 rollforward db sample to end of logs and complete
雖然這兩種方法是等效的,但建議您分兩個步驟來完成此類操作。在停止前滾操作前驗證它是否具有預期的進度,以免丟失任何日誌,這一點很重要。
如果前滾命令遇到錯誤,前滾操作就無法完成。在此情況下,將返回該錯誤,這樣,您就能夠修正該錯誤並重新發出以上命令。但是,如果無法修正該錯誤,那麼可以通過發出以下命令強制前滾完成:
db2 rollforward db sample complete
此命令使數據庫聯機並復原到發生故障前日誌點。
示例 2
將數據庫前滾至日誌末尾(已復原了兩個表空間):
db2 rollforward db sample to end of logs
db2 rollforward db sample to end of logs and stop
這兩個語句是等效的。不需要 AND STOP 或 AND COMPLETE 表空間就可以前滾恢復至日誌末尾。不需要表空間名稱。如果未指定,將包括所有需要前滾恢復的表空間。如果將只前滾這些表空間的一個子集,那麼必須指定它們的名稱。
示例 3
復原了 3 個表空間後,將其中一個前滾至日誌末尾,另兩個前滾到某時間點,所有操作都要聯機執行:
db2 rollforward db sample to end of logs tablespace(TBS1) online
db2 rollforward db sample to 1998-04-03-14.21.56 and stop
tablespace(TBS2, TBS3) online
應注意,兩個前滾操作不能併發運行。只有在成功地完成了第一個前滾操作後,才能調用第二個命令。
示例 4
復原數據庫後,前滾到某時間點,使用 OVERFLOW LOG PATH 來指定用戶出口用來保存已歸檔日誌的目錄:
db2 rollforward db sample to 1998-04-03-14.21.56 and stop
overflow log path (/logs)
示例 5
在以下示例中,有一個稱爲 sample 的數據庫。備份該數據庫,在備份映像中包含恢復日誌;復原該數據庫;然後,將該數據庫前滾到備份時間戳記末尾。
備份該數據庫,在備份映像中包含恢復日誌:
db2 backup db sample online include logs
使用備份映像復原該數據庫:
db2 restore db sample
將該數據庫前滾到備份時間戳記末尾:
db2 rollforward db sample to end of backup
示例 6(分區數據庫環境)
有三個數據庫分區:0、1 和 2。在所有數據庫分區上定義表空間 TBS1,在數據庫分區 0 和 2 上定義表空間 TBS2。在數據庫分區 1 上覆原了數據庫,並在數據庫分區 0 和 2 上覆原了 TBS1 之後,在數據庫分區 1 上前滾數據庫:
db2 rollforward db sample to end of logs and stop
這會返回警告 SQL1271(已恢復數據庫,但數據庫分區 0 和 2 上的一個或多個表空間處於脫機狀態)。
db2 rollforward db sample to end of logs
此命令在數據庫分區 0 和 2 上前滾 TBS1。在此情況下,子句 TABLESPACE(TBS1) 是可選的。
示例 7(分區數據庫環境)
在以下示例中,有一個稱爲 sample 的分區數據庫。使用單系統視圖備份備份所有數據庫分區;在所有數據庫分區上覆原該數據庫;將該數據庫前滾到備份時間戳記末尾。
執行單系統視圖 (SSV) 備份:
db2 backup db sample on all nodes online include logs
在所有數據庫分區上覆原該數據庫:
db2_all "db2 restore db sample taken at 1998-04-03-14.21.56"
將該數據庫前滾到備份時間戳記末尾:
db2 rollforward db sample to end of backup on all nodes
示例 8(分區數據庫環境)
在以下示例中,有一個稱爲 sample 的分區數據庫。使用 db2_all,通過一個命令備份所有數據庫分區;在所有數據庫分區上覆原該數據庫;並將該數據庫前滾到備份時間戳記末尾。
使用 db2_all,通過一個命令備份所有數據庫分區:
db2_all "db2 backup db sample include logs to /shared/dir/"
在所有數據庫分區上覆原該數據庫:
db2_all "db2 restore db sample from /shared/dir/"
將該數據庫前滾到備份時間戳記末尾:
db2 rollforward db sample to end of backup on all nodes
示例 9(分區數據庫環境)
只在數據庫分區 0 和 2 上覆原表空間 TBS1 之後,在數據庫分區 0 和 2 上前滾 TBS1:
db2 rollforward db sample to end of logs
忽略數據庫分區 1。
db2 rollforward db sample to end of logs tablespace(TBS1)
此命令失敗,因爲 TBS1 未對在數據庫分區 1 上進行前滾恢復作好準備。報告 SQL4906N。
db2 rollforward db sample to end of logs on
dbpartitionnums (0, 2) tablespace(TBS1)
成功完成。
db2 rollforward db sample to 1998-04-03-14.21.56 and stop
tablespace(TBS1)
此命令失敗,因爲 TBS1 未對在數據庫分區 1 上進行前滾恢復做好準備;必須將所有段一起前滾。
在數據庫分區 1 上覆原 TBS1 後:
db2 rollforward db sample to 1998-04-03-14.21.56 and stop
tablespace(TBS1)
成功完成。
示例 10(分區數據庫環境)
在所有數據庫分區上覆原表空間後前滾至 PIT2,但不指定 AND STOP。前滾操作仍在進行中。取消並前滾至 PIT1:
db2 rollforward db sample to pit2 tablespace(TBS1)
db2 rollforward db sample cancel tablespace(TBS1)
** restore TBS1 on all dbpartitionnums **
db2 rollforward db sample to pit1 tablespace(TBS1)
db2 rollforward db sample stop tablespace(TBS1)
示例 11(分區數據庫環境)
前滾恢復 db2nodes.cfg 文件中列示的 8 個數據庫分區(3 至 10)上的表空間:
db2 rollforward database dwtest to end of logs tablespace (tssprodt)
前滾恢復至日誌末尾(而不是時間點)的操作成功完成。不必指定表空間所在的數據庫分區。實用程序缺省到 db2nodes.cfg 文件。
示例 12(分區數據庫環境)
前滾恢復單一數據庫分區數據庫分區組(在數據庫分區 6 上)上的 6 個小表空間:
db2 rollforward database dwtest to end of logs on dbpartitionnum (6)
tablespace(tsstore, tssbuyer, tsstime, tsswhse, tsslscat, tssvendor)
前滾恢復至日誌末尾(而不是時間點)的操作成功完成。
示例 13(分區表 - 在所有數據分區上前滾至日誌末尾)
使用表空間 tbsp1、tbsp2 和 tbsp3 創建了分區表,索引在 tbsp0 中。後來,用戶對 tbsp4 中的表添加了數據分區,並從 tbsp5 中的表連接了數據分區。可以將所有表空間前滾至日誌末尾。
db2 rollforward db PBARDB to END OF LOGS and stop
tablespace(tbsp0, tbsp1, tbsp2, tbsp3, tbsp4, tbsp5)
成功完成。
示例 14(分區表 - 在一個表空間上前滾至日誌末尾)
最初使用表空間 tbsp1、tbsp2 和 tbsp3 創建了分區表,索引在 tbsp0 中。後來,用戶對 tbsp4 中的表添加了數據分區,並從 tbsp5 中的表連接了數據分區。表空間 tbsp4 損壞並要求復原和前滾至日誌末尾。
db2 rollforward db PBARDB to END OF LOGS and stop tablespace(tbsp4)
成功完成。
示例 15(分區表 - 在所有數據分區上前滾到時間點,這些數據分區包括那些已添加、已連接、已拆離或帶索引的數據分區)
使用表空間 tbsp1、tbsp2 和 tbsp3 創建了分區表,索引在 tbsp0 中。後來,用戶對 tbsp4 中的表添加了數據分區,從 tbsp5 中的表連接了數據分區,並從 tbsp1 拆離了數據分區。用戶對分區表使用的所有表空間(包括 INDEX IN 子句中指定的那些表空間)執行前滾到 PIT 操作。
db2 rollforward db PBARDB to 2005-08-05-05.58.53 and stop
tablespace(tbsp0, tbsp1, tbsp2, tbsp3, tbsp4, tbsp5)
成功完成。
示例 16(分區表 - 在一小部分表空間上前滾到 PIT)
使用三個表空間(tbsp1、tbsp2 和 tbsp3)創建了分區表。後來,用戶從 tbsp3 中拆離了所有數據分區。只允許在 tbsp1 和 tbsp2 上前滾到 PIT。
db2 rollforward db PBARDB to 2005-08-05-06.02.42 and stop
tablespace( tbsp1, tbsp2)
成功完成。