程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2數據庫恢復的一些經驗總結

DB2數據庫恢復的一些經驗總結

編輯:DB2教程

今天像大家描述的是DB2數據庫恢復的一些實際操作經驗的總結,前幾天我們剛進行DB2數據庫恢復測試,想不到這麼快就用到了。所以說每當你發現某個技術可能會用到,但是還沒動過手,必須立即動下手。說不定那天就要用到。

那天下午突然收到項目經理電話,說生產庫某個表被工程人員刪錯了數據了,希望能在測試環境對生產庫進行恢復。我當時第一感覺就是測試環境的空間不夠。生產庫表空間分配的空間一共是200g不到。但是使用的空間不到50g。當時我懷疑DB2的這個恢復應該是類似於oracle的rman恢復,直接進行物理恢復。直接將表空間恢復出來。因此需要200g左右的空間。

測試環境肯定是沒有這麼大的空間了,但是不完全肯定,嘗試做下恢復。有報錯,看了下,是說某個路徑沒有權限讀寫,仔細看了下,那個路徑是生產庫表空間文件存放的路徑。原來DB2恢復只能恢復在原路徑上。建立好相應的文件系統。再看還是有報錯,原來是日志的目錄不存在,再建文件系統,恢復。還報錯,這次是歸檔日志的目錄,再建,恢復。

  1. DB2 RESTORE db abc FROM /DB2/data/bk taken at 20100517000001 

結果顯示,有部分表空間沒有恢復成功,但是整體DB2數據庫恢復是成功了。

將需要的歸檔日志拷貝到(/DB2/data/bk/log/)目錄,做前滾

  1. DB2 "rollforward db abc to end of logs and stop overflow log path(/DB2/data/bk/log/)" 

報錯

  1. SQL1218N There are no pages currently available in bufferpool "". 

覺得應該是恢復過程中出現問題,查看DB2的日志。日志太大,感覺不方便看,因此再做一次恢復,然後實時監控日志輸出。發現在恢復一些表空間的時候,一直抱一個disk full的錯誤。問題應該定位到,就是磁盤空間不夠。但是測試環境的磁盤空間是絕對不可能騰出200g出來。咋辦?

最後實在沒辦法,就在生產庫的磁陣上,建了一個200g的nfs給測試環境用,再進行DB2數據庫恢復。過程有報錯,是說表空間的使用率超過閥值,因為有些表空間的使用率是100%,不知道那些表空間是否有用的.......。

200g的恢復果然很花時間,用了差不多一個多小時。再做一次前滾,仍然報錯

  1. SQL1218N There are no pages currently available in bufferpool "". 

奇了怪了!上網搜了下,也有人碰到一樣的問題。建議修改參數

  1. DB2set DB2_OVERRIDE_BPF=1000, 

然後重啟DB2,

果然,能夠成功前滾,DB2也能成功登錄。

總結:

1.在進行DB2異地DB2數據庫恢復的時候,已經要先建好相應的目錄,數據文件目錄,日志目錄,歸檔日志目錄。

2.在操作失敗需要查看日志時候,盡量想辦法去看老日志,因為重新操作,再實時看日志,雖然比較明朗,但是需要花費更多的時間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved