前滾會話 - CLP 示例
ROLLFORWARD DATABASE 命令允許每次指定多個操作,各個操作由關鍵字?AND?隔開。例如,要前滾至日志末尾,然后完成,可將下列獨立的命令:
??????db2?rollforward?db?sample?to?end?of?logsdb2?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?logsdb2?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)?onlinedb2?rollforward?db?sample?to?1998-04-03-14.21.56?and?stoptablespace(TBS2,?TBS3)?online
應注意,兩個前滾操作不能并發運行。只有在成功地完成了第一個前滾操作后,才能調用第二個命令。
示例 4
復原數據庫后,前滾到某時間點,使用 OVERFLOW LOG PATH 來指定用戶出口用來保存已歸檔日志的目錄:
???db2?rollforward?db?sample?to?1998-04-03-14.21.56?and?stopoverflow?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?ondbpartitionnums?(0,?2)?tablespace(TBS1)
成功完成。
???db2?rollforward?db?sample?to?1998-04-03-14.21.56?and?stoptablespace(TBS1)
此命令失敗,因為 TBS1 未對在數據庫分區 1 上進行前滾恢復做好準備;必須將所有段一起前滾。
注:?在將表空間前滾到某時間點之后,將不接受 dbpartitionnum 子句。前滾操作必須在表空間所在的所有數據庫分區上進行。
在數據庫分區 1 上復原 TBS1 后:
???db2?rollforward?db?sample?to?1998-04-03-14.21.56?and?stoptablespace(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?stoptablespace(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)
轉載于:https://blog.51cto.com/arvin0213/1929595