北京某公司的一臺服務器,上層數據類型爲Oracle數據庫,因爲服務器意外斷電,致使數據庫報錯,報錯內容爲「system01.dbf須要更多的恢復來保持一致性」。因爲客戶的數據庫並無備份,僅有一些斷斷續續的歸檔日誌,如今只能經過數據恢復手段來修復Oracle數據庫。數據庫
首先利用dbv命令檢測數據文件是不是完整的。見下圖所示:
經過上面的截圖咱們能夠看到,咱們檢測的文件數據塊中有40頁的數據是檢測失敗的狀態。另外有29頁的索引數據也是失敗狀態。除此之外其餘文件均爲正常狀態。服務器
北亞數據恢復工程師在數據恢復專用服務器上搭建了一組Windows server 2008 x86環境,並安裝了和客戶原服務器上相同的數據庫環境,嘗試將數據庫掛起來,查看數據庫的報錯狀況,請見下圖所示;oracle
根據數據庫的報錯狀況,北亞數據恢復工程師採起了藉助在線日誌恢復數據的方法,使用recover database命令。ide
通過一系列的修復發現,因爲歸檔日誌不連續,恢復數據庫所需時間段的歸檔日誌缺失,只能使用cancel參數進行不徹底數據恢復。
數據恢復工程師再次執行恢復命令,打開數據庫,查詢實例狀態有無報錯。通過查詢,仍有部分數據報錯,報錯內容爲「ora_00600」工具
經過上圖截圖內容可見,這類數據庫內部錯誤是沒法經過命令進行修復的,北亞數據恢復中心工程師藉助expdp/exp工具嘗試對數據庫進行導出,但這兩個工具導出數據庫時依然有報錯,數據庫已經不可能進行修復。日誌
使用北亞自主研發的一款dbf解析工具,獲取到客戶數據庫內的數據。以下圖所示:
北亞數據恢復中心工程師獲取到數據庫數據後在數據恢復專用服務器內搭建數據庫環境,建立數據庫、用戶、分配表空間等。將解析出來的數據庫數據遷移到新數據庫中。使用toad for oracle工具驗證數據。見下圖所示;server
數據恢復工程師再次使用exp工具將數據庫導出,導出命令:
exp system/abc file=C:\test\dump\zxfg.dmp log=C:\test\dump\zxfg.log owner=zxfg
本次導出正常,沒有任何報錯。經客戶驗證,Oracle數據庫完整,本次數據恢復圓滿成功。blog