DB2 rollfoward 詳細示例

前滾會話 - CLP 示例

版本 9.7.0

示例 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 上進行前滾恢復做好準備;必須將所有段一起前滾。

注:
在將表空間前滾到某時間點之後,將不接受 dbpartitionnum 子句。前滾操作必須在表空間所在的所有數據庫分區上進行。

在數據庫分區 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)

成功完成。

轉自:https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_9.7.0/com.ibm.db2.luw.admin.ha.doc/doc/c0024711.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章