共計 2283 個字符,預計需要花費 6 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 DB2 中在線增量備份失敗的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
公司有一臺 DB2 服務器在線增量備份失敗,使用的備份軟件為 NETBACKUP 7.5。具體報錯如下:
nbu 報 4 號錯誤,在賽門鐵克的官網上,對 4 號錯誤的描述是
給出的解決方案是驗證權限, 是否可刪除文件。如果你從這個思路去找原因解決問題,就會很困惑。因為即使你把權限設成 777,也還是會報這個錯誤。
換一個思路,還是看看 DB2 的 db2diag.log 日志吧。日志里有這樣一段描述:
2013-06-19-15.22.29.980017-360 E437909183A905 LEVEL: Severe
PID : 798772 TID : 1 PROC : db2agent (idle) 0
INSTANCE: db2inst2 NODE : 000 DB : PORTALDB
APPHDL : 0-490 APPID: *LOCAL.db2inst2.130619212231
AUTHID : DB2INST2
FUNCTION: DB2 UDB, database utilities, sqlubInitCheck, probe:310
MESSAGE : SQL2426N The database has not been configured to allow the
incremental backup operation. Reason code = .
這個信息告訴我們數據庫沒有配置允許增量備份的功能,在 DB2 中需要開啟。在 ORACLE 中,則可以通過 RMAN 實現比較方便的增量和差異備份。
接下來我們查一下 TRACKMOD 參數
$ db2 get db cfg for portaldb|grep -i trackmod
Track modified pages (TRACKMOD) = OFF
發現此參數為 OFF, 這顯然是導致 DB2 增量備份失敗的最主要的原因。
因為 db2 的增量備份需要設置 tracemod 為 on, 這樣數據庫將在物理頁上記錄更改的部分頁, 做 dirty 標記。開啟了增量備份意味著, 不需要每次備份一個超大的數據庫. 同時意味著你可以將數據庫恢復到崩潰前的狀態, 而不是你最后一次備份時的狀態, 最大可能的減少數據損失.
正確設置增量備份需要注意三個參數:
db2 update db cfg using logretain on(或者 recovery); 啟用歸檔日志
db2 update db cfg using trackmod on; 啟用增量備份功能
db2 update db cfg using userexit on; 啟用用戶出口
更改的效果:
$ db2 update db cfg using trackmod on
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
SQL1363W One or more of the parameters submitted for immediate modification
were not changed dynamically. For these configuration parameters, all
applications must disconnect from this database before the changes become
effective.
也就是說,對于這些配置參數,必須在所有應用程序都與此數據庫斷開連接之后(db2 force applications all),更改才會生效。另外在更改參數后,數據庫處于 backup pending 狀態,在執行增量、在線備份之前必須執行離線全備份一次,以使狀態正常。
補充:如何進行在線備份、增量備份、差異備份?
db2 backup db testdb online to 備份路徑 (在線全備份) include logs
db2 backup db testdb online incremental to 備份路徑 (增量備份)
db2 backup db testdb online incremental delta to 備份路徑 (delta 備份)
如何使用備份文件進行恢復?
1. 查看備份文件的完整性, 并驗證是否可用
db2ckbkp -h /db2logs/PORTALDB.0.db2inst2.NODE0000.CATN0000.20130619001007.001
2. 執行 db2ckrst 命令返回建議的必需的恢復操作命令。
db2ckrst -d portaldb -r database -t 20130619001007
3. 執行上個命令給出的命令序列
db2 restore db portaldb incremental from /backup taken at 20130619001007 buffer 100
將會將數據庫還原到備份的時刻, 之后應該執行日志前滾 (此時數據庫處于前滾暫掛狀態, 將無法使用)
db2 rollforward db portaldb to end of logs and complete
當然如果你認為不需要前滾 (這樣將丟失最后一次備份之后的更改), 也可以
db2 rollforward db portaldb stop
當你了解了這些知識,就能夠正確有序的執行備份恢復,快速高效的解決問題。
以上是“DB2 中在線增量備份失敗的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!