Restore

還原離線備份後無法連接到 DB2 數據庫

  • December 18, 2018

這適用於 AIX 上的 DB2 9.7 Enterprise Server Edition。

我在性能環境中對我們實例中的多個數據庫進行了完整的離線備份。

我想將這些數據庫恢復到我們的集成環境中。

我執行了命令

db2 restore database database_name from 
/bkp/instance_name/OfflineBackups/RestorePoint/my_restore_point 
taken at 20120321103846 into database_name without prompting;

對於我的每個數據庫(當然適當地修改數據庫名稱和時間戳)。

每個數據庫都按照 DB2 成功恢復。但是,現在當我想檢查數據庫是否確實恢復了我的想法時,我嘗試連接到數據庫並收到錯誤

   SQL1117N  A connection to or activation of database "database_name" cannot be made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019

我在以前的數據庫中沒有任何正在進行的事務,因為所有連接都被強制關閉並且數據庫已關閉以進行離線備份。我該怎麼辦?

在這裡找到了答案。

我需要執行命令

db2 rollforward db database_name to end of backup and complete;

這會將所有內容送出到日誌並將數據庫置於不再掛起的狀態,從而允許連接到它。我需要為每個恢復的數據庫執行此操作。

編輯:在參加DB2NightShow劇集時發現了這個漂亮的金塊。在 9.7 FP2 中,他們引入了一個名為 DB2_RESTORE_GRANT_ADMIN_AUTHORITY 的系統資料庫變數。如果您要將備份從一個實例恢復到另一個實例,這很方便,因為它會自動授予實例所有者 SECADM、DBADM、DATAACCESS 和 ACCESSCTRL 恢復的數據庫。在 9.7 FP5 中,設置是動態的,不需要實例的反彈。我意識到我最初的問題與安全性無關,但可以遇到並認為這將是一個方便的花絮。


**編輯#2:**我最近發現如果備份是基於歸檔日誌數據庫的離線備份,我可以WITHOUT ROLLING FORWARD在我的RESTORE命令中包含該子句。這將使數據庫在成功還原後立即脫離前滾掛起狀態,這意味著我不必再發出ROLLFORWARD DB命令。

引用自:https://dba.stackexchange.com/questions/15809