【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例

北亞資料恢復發表於2022-09-08

資料庫故障情況:


由於機房異常斷電,Oracle資料庫重新啟動後報錯:“system01.dbf需要更多的恢復來保持一致性,資料庫無法開啟”。

Oracle資料庫沒有備份,歸檔日誌不連續。管理員聯絡到我們資料恢復中心尋求幫助。管理員提供了故障資料庫的線上檔案

,需要恢復zxfg使用者下的資料。


資料庫資料恢復方案:


檢測資料庫故障,嘗試掛起並修復資料庫,解析資料檔案。


資料庫資料恢復過程:


1、檢測資料檔案的完整性。



結果發現SYSAUX01.DBF檔案資料塊(Data)檢測失敗40頁,索引頁(Index)檢測失敗29頁,可以初步判斷

SYSAUX01.DBF 存在壞塊。透過dbv對資料檔案的完整性進行檢驗,確認了SYSAUX01.DBF存在壞塊,其他檔案經過檢測都是

完整的。


2、利用管理員提供的資料庫線上檔案在本地掛起資料庫,修復故障資料庫並匯出資料。


a、建立新的windows server系統,安裝和使用者原始環境資料庫版本一致的oracle資料庫,掛起資料庫。



b、啟動資料庫報ORA-01110錯誤,System01.dbf需要更多一致性恢復。使用recover database命令,利用線上日誌做介

質恢復。



c、故障資料庫的控制檔案已被修改,需要使用控制檔案恢復資料庫。



d、恢復資料庫需要的歸檔日誌已經丟失,只能使用cancel引數進行不完全恢復。



e、再次執行alter database open命令,開啟資料庫。



f、查詢例項狀態,資料庫報ora_00600錯誤;進行其他查詢發現一些查詢可以進行,一些查詢報錯,報錯都是ora_00600 錯誤。



g、檢視警告日誌,追蹤檔案,檢視內部錯誤程式碼;

警告日誌部分內容如下:ORA-00600: internal error code, arguments: [13013], [5001], [267], [8456009], [5], [8456009], 

[17], [], [], [], [], []

Non-fatal internal error happenned while SMON was doing logging scn->time mapping.


h、用expdp/exp工具匯出資料庫。expdp匯出資料庫報錯,和上面查詢報同樣的錯誤。sysaux01.dbf檔案損壞導致expdp

工具不可用,匯出資料庫失敗。



嘗試使用exp匯出資料庫但是報同樣的錯誤。資料庫報嚴重內部錯誤,匯出工具exp無法使用,甚至一些查詢都不能進行,

匯出資料庫失敗。


i、透過上面的嘗試,基本可以確定故障資料庫的恢復已經不可能。資料庫資料恢復工程師使用北亞自主研發DBF解析工具

獲取資料。



j、遷移物件到資料庫中。建立資料庫,在資料庫中建立使用者,為使用者分配表空間,解鎖使用者並授權。然後透過資料搭橋的

方式,將解析到的使用者物件遷移到資料庫中。


k、使用toad for oracle工具驗證資料。



l、使用exp或者expdp匯出zxfg使用者下的所有物件。本案例是採用exp匯出資料:

命令如下:exp system/abc  file=C:\test\dump\zxfg.dmp log=C:\test\dump\zxfg.log owner=zxfg



m、檢視匯出資料庫的dmp檔案及匯出日誌,確保匯出的檔案沒有問題。管理員將匯出的資料匯入,檢視匯入資料的完整性

,沒有發現問題,恢復出來的資料完整可用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2913963/,如需轉載,請註明出處,否則將追究法律責任。

相關文章