DB2 線上恢復但沒有前滾?
我閱讀了很多關於 db2 restore 的文件,但我找不到如何從上次數據庫備份執行線上恢復但沒有日誌前滾?
我會欣賞命令範例。
例如,我最後一次線上備份是在 2 月 1 日進行的。我想對該備份進行線上恢復,但在 2 月 1 日之後沒有日誌(類似於沒有 ROLL FORWARD 的離線恢復選項)。
我正在使用 db2 9.7
先感謝您
根據資訊中心:
“如果從線上備份映像恢復時指定了此選項,將返回錯誤 SQL2537N。”
所以你只剩下向前滾動了。話雖如此,您可以嘗試以下方法
db2 rollforward db mydb to end of backup and complete
根據前滾命令的資訊
END OF BACKUP 指定分區數據庫中的所有分區都應該前滾到最短恢復時間。有關範例,請參見下面的範例部分。
這應該恢復您嘗試恢復到備份結束點的任何內容,並且不包括備份後可能發生的任何前滾事務日誌。通常,您仍然必須至少發出此語句才能從使用存檔日誌的離線備份進行恢復。
我個人沒有嘗試過,也沒有必要進行聯機,只前滾到備份結束。試一試,讓我們都知道會發生什麼。
**編輯:**回答以下問題:您必須啟用歸檔日誌才能進行線上備份。您仍然可以使用歸檔日誌進行離線備份。您不必切換回圓形即可。但是,一旦啟用歸檔日誌記錄,無論是從離線備份還是聯機備份恢復,都必須在完成後執行前滾。沒有辦法解決它。請參閱我自己之前的問題。
為了設置歸檔日誌,您需要更改數據庫配置參數
LOGARCHMETH1
。預設情況下,它設置為OFF
,這意味著循環日誌記錄。您對它的選擇如下:
DISK
TSM
USEREXIT
VENDOR
LOGRETAIN
LOGRETAIN
告訴 DB2 將歸檔日誌留在日誌目錄中。它不會為您清理任何這些日誌(讓您作為 DBA 執行此操作)。USEREXIT
讓非 IBM 第三方工具負責儲存和歸檔您的日誌(通常用 C 手動編碼)。據我了解,已經沒有太多人使用它了。DISK
並且TSM
似乎使用了相當數量。DISK
告訴 DB2 您要將日誌歸檔到哪裡(儘管設置了一些其他參數,DB2 可以自動清理不再需要的日誌 - 我將在下面向您展示)。TSM
告訴 DB2 讓 IBM 的 Tivoli Storage Manager 歸檔日誌。您還必須進行一些其他設置才能使其正常工作。在我工作的地方,我們還沒有嘗試過。最後,VENDOR
用於使用第三方供應商產品來歸檔您的日誌。要將歸檔日誌設置到不同的磁碟位置並讓 DB2 自動為您清理內容,您可以執行以下操作(注意:這些在 Unix 路徑中)
db2 connect to mydb user <admin user> using <admin user password> #NOTE THE double and single quotes needed on the command line in Unix db2 "update db cfg using logarchmeth1 'DISK:/dbarch/dblogs'" db2 update db cfg using num_db_backups 2 db2 update db cfg using rec_his_retentn 2 db2 update db cfg using auto_del_rec_obj on db2 terminate
這將告訴 DB2 將 2 個完整備份至少保留兩天。兩個備份已經保存了兩天,另外一個被備份,最舊的備份將被 DB2 刪除。DB2 還將隨後清除現在刪除的備份和下一個最舊的保留備份之間的所有日誌。
另請注意:一旦您切換到歸檔日誌,DB2 將要求您立即進行離線備份作為您的下一步操作(即,數據庫將進入
BACKUP PENDING
模式),在您這樣做之前您將無法執行任何其他操作。希望這可以幫助!