DB2 V9聯機備份還原(四)

rheet1978發表於2008-07-01
利用聯機全量備份恢復示例資料庫DB2TEST1

       利用聯機備份映像檔案恢復資料庫,需要用到聯機備份期間相關的日誌檔案,如果沒有這些日誌檔案,整個恢復過程將不能完成。由於我們在聯機資料庫備份時使用INCLUDE LOGS選項,所以在聯機全量備份映像檔案中包含了聯機備份期間相關的日誌檔案。要從備份映像復原日誌檔案,可使用RESTORE DATABASE命令的LOGTARGET選項,並指定存在於DB2伺服器上的標準路徑。然後,復原資料庫實用程式將日誌檔案從映像寫至目標路徑。如果目標路徑中已存在名稱相同的日誌檔案,復原操作將失敗並返回一個錯誤。如果未指定 LOGTARGET選項,則不會從備份映像中復原任何日誌檔案。如果指定 LOGTARGET選項,且備份映像不包含任何日誌檔案,則在嘗試復原任何表空間資料之前,將返回一個錯誤。如果指定無效或只讀路徑,復原操作也將失敗。在指定 LOGTARGET選項條件下,復原資料庫或表空間的過程中,如果不能抽取一個或多個日誌檔案,則復原操作失敗並返回錯誤。還可以選擇只復原儲存在備份映像中的日誌檔案。要執行此操作,可使用 RESTORE DATABASE命令的LOGTARGET選項指定LOGS選項。以此方式復原日誌檔案時,如果復原操作遇到任何問題,則復原操作失敗並返回錯誤。

 

下面我們來利用之前的聯機備份映像(時間戳為20070928223032)進行還原。在資源管理器中,開啟示例資料庫DB2TEST1的活動日誌目錄C:\DB2\NODE0000\SQL00002\SQLOGIDR\(想檢視示例資料庫DB2TEST1的活動日誌目錄,可以使用GET DB CFG看到),刪除所有的日誌檔案(注意,生產系統不能刪除活動日誌,否則資料庫會當機)。本示例是為了演示如何還原資料庫,刪除日誌後隨即執行還原,為了更清晰的看到如何利用備份檔案中的日誌進行還原,故刪除了以前的活動日誌。

在DB2CLP視窗中發出帶LOGTARGET選項的RESTORE DATABASE命令,並指定把備份映像中的日誌檔案放到C:\DB2\NODE0000\SQL00002\SQLOGIDR\中,具體如清單11所示:

 

- - 清單 11 .利用聯機備份映像還原示例資料庫DB2TEST1

 

C:\> db2 restore db db2test1 taken at 20070928223032  logtarget C:\DB2\NODE0000\SQL00002\SQLOGDIR

SQL2539W  警告!正在復原至與備份映像資料庫相同的現有資料庫。資料庫檔案將被刪除。

 

 

要繼續嗎?( y / n ) y

DB20000I  RESTORE DATABASE命令成功完成。

 

 

如清單11所示,還原的過程中,會提示“正在復原至與備份映像資料庫相同的現有資料庫。資料庫檔案將被刪除。是否要繼續?”這時候選擇y,也就是“是”的意思,回車。命令成功完成,這樣就把備份映像中的S0000001.LOG日誌檔案釋放到了C:\DB2\NODE0000\SQL00002\SQLOGIDR\目錄中。由於歸檔日誌情況下的利用聯機備份映像還原必須進行前滾恢復,所以接下來我們進行前滾恢復,在DB2CLP視窗中發出ROLLFORWARD DB命令,具體如清單12所示:

 

- - 清單 12 .對示例資料庫DB2TEST1進行前滾恢復

 

C:\> db2 rollforward db db2test1 to end of logs and stop

 

                                 前滾狀態

 

 輸入資料庫別名                      = db2test1

 節點數已返回狀態                = 1

 

 節點號                                = 0

 前滾狀態                                    = 未暫掛

 下一個要讀取的日誌檔案          =

 已處理的日誌檔案                = S0000001.LOG - S0000001.LOG

 上次落實的事務                  = 2007-09-28-14.30.36.000000 UTC

 

DB20000I  ROLLFORWARD命令成功完成。

 

 

命令成功完成,可以看到,在前滾過程中,對S0000001.LOG已經進行了前滾。

此時在DB2CLP視窗中,連線上示例資料庫DB2TEST1,發出SELECT語句,檢視示例表TEST1,可以看到我們在聯機備份時插入的資料,名稱為”SCA”的記錄已經成功恢復,具體如清單13所示:

 

- - 清單 13 .檢視示例表TEST1

 

C:\> DB2 CONNECT TO DB2TEST1

 

   資料庫連線資訊

 

 資料庫伺服器         = DB2/NT 9.1.0

 SQL 授權標識         = RHETTE

 本地資料庫別名       = DB2TEST1

 

 

C:\> DB2 SELECT * FROM TEST1

 

ID          NAME       NOTE

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          1 RHETTE     the first rows

          2 DANIEL     the second rows

          3 SCA        the third rows

 

3 條記錄已選擇。

 

 

       至此,我們成功的利用聯機備份映像還原了示例資料庫DB2TEST1,總結一下,整個過程如下:

Ø         在歸檔日誌模式下,對資料庫發出帶ONLINE和INCLUDE LOG選項的BACKUP DATABASE命令,聯機全量備份示例資料庫DB2TEST1,備份映像中包含聯機備份期間相關的日誌。

Ø         利用帶LOGTARGET選項的RESTORE DATABASE命令,使用聯機備份映像恢復示例資料庫DB2TEST1,並把日誌檔案中的日誌檔案解壓到示例資料庫DB2TEST1的活動日誌目錄中。

利用前滾恢復滾動到日誌末尾完成最後的操作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-366503/,如需轉載,請註明出處,否則將追究法律責任。

相關文章