DB2數(shù)據(jù)庫恢復(fù)的一些經(jīng)驗總結(jié)
今天像大家描述的是DB2數(shù)據(jù)庫恢復(fù)的一些實際操作經(jīng)驗的總結(jié),前幾天我們剛進(jìn)行DB2數(shù)據(jù)庫恢復(fù)測試,想不到這么快就用到了。所以說每當(dāng)你發(fā)現(xiàn)某個技術(shù)可能會用到,但是還沒動過手,必須立即動下手。說不定那天就要用到。
那天下午突然收到項目經(jīng)理電話,說生產(chǎn)庫某個表被工程人員刪錯了數(shù)據(jù)了,希望能在測試環(huán)境對生產(chǎn)庫進(jìn)行恢復(fù)。我當(dāng)時***感覺就是測試環(huán)境的空間不夠。生產(chǎn)庫表空間分配的空間一共是200g不到。但是使用的空間不到50g。當(dāng)時我懷疑DB2的這個恢復(fù)應(yīng)該是類似于oracle的rman恢復(fù),直接進(jìn)行物理恢復(fù)。直接將表空間恢復(fù)出來。因此需要200g左右的空間。
測試環(huán)境肯定是沒有這么大的空間了,但是不完全肯定,嘗試做下恢復(fù)。有報錯,看了下,是說某個路徑?jīng)]有權(quán)限讀寫,仔細(xì)看了下,那個路徑是生產(chǎn)庫表空間文件存放的路徑。原來DB2恢復(fù)只能恢復(fù)在原路徑上。建立好相應(yīng)的文件系統(tǒng)。再看還是有報錯,原來是日志的目錄不存在,再建文件系統(tǒng),恢復(fù)。還報錯,這次是歸檔日志的目錄,再建,恢復(fù)。
- DB2 RESTORE db abc FROM /DB2/data/bk taken at 20100517000001
結(jié)果顯示,有部分表空間沒有恢復(fù)成功,但是整體DB2數(shù)據(jù)庫恢復(fù)是成功了。
將需要的歸檔日志拷貝到(/DB2/data/bk/log/)目錄,做前滾
- DB2 "rollforward db abc to end of logs and stop overflow log path(/DB2/data/bk/log/)"
報錯
- SQL1218N There are no pages currently available in bufferpool "".
覺得應(yīng)該是恢復(fù)過程中出現(xiàn)問題,查看DB2的日志。日志太大,感覺不方便看,因此再做一次恢復(fù),然后實時監(jiān)控日志輸出。發(fā)現(xiàn)在恢復(fù)一些表空間的時候,一直抱一個disk full的錯誤。問題應(yīng)該定位到,就是磁盤空間不夠。但是測試環(huán)境的磁盤空間是絕對不可能騰出200g出來。咋辦?
***實在沒辦法,就在生產(chǎn)庫的磁陣上,建了一個200g的nfs給測試環(huán)境用,再進(jìn)行DB2數(shù)據(jù)庫恢復(fù)。過程有報錯,是說表空間的使用率超過閥值,因為有些表空間的使用率是100%,不知道那些表空間是否有用的.......。
200g的恢復(fù)果然很花時間,用了差不多一個多小時。再做一次前滾,仍然報錯
- SQL1218N There are no pages currently available in bufferpool "".
奇了怪了!上網(wǎng)搜了下,也有人碰到一樣的問題。建議修改參數(shù)
- DB2set DB2_OVERRIDE_BPF=1000,
然后重啟DB2,
果然,能夠成功前滾,DB2也能成功登錄。
總結(jié):
1.在進(jìn)行DB2異地DB2數(shù)據(jù)庫恢復(fù)的時候,已經(jīng)要先建好相應(yīng)的目錄,數(shù)據(jù)文件目錄,日志目錄,歸檔日志目錄。
2.在操作失敗需要查看日志時候,盡量想辦法去看老日志,因為重新操作,再實時看日志,雖然比較明朗,但是需要花費更多的時間。
【編輯推薦】