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