oracle斷電損壞如何恢復
瀏覽量: 次 發布日期:2018-02-01 13:00:01
Oracle數據庫時,突然斷電,造成很多問題,致使舊數據丟失,影響了數據的正確性,破壞了數據庫。此時,用戶急切需求恢復數據。本文以此為例,講述數據庫數據恢復。
一、案例描述:
數據庫因突然斷電,數據庫啟庫報system01.dbf需要更多的恢復來保持一致性,數據庫無法打開;數據庫沒有備份,歸檔日志也不連續??蛻籼峁┝藬祿斓脑诰€文件,急需恢復zxfg用戶下的數據。
二、恢復流程:
1 數據庫的故障檢測
2 嘗試掛起數據庫并修復數據庫
3解析數據文件
4 驗證數據
5導出數據與交付數據(導入)
三、恢復數據
1數據庫的故障檢測
利用DBV 命令檢測數據文件的完整性
結果如下:
分析結果發現SYSAUX01.DBF文件數據塊(Data)檢測失敗40頁,索引頁(Index)檢測失敗29頁,說明SYSAUX01.DBF存在壞塊。
結論:通過dbv對數據文件的完整性檢驗,SYSAUX01.DBF存在壞塊,其他檢測的文件完整。
2 用客戶的數據庫本地掛起數據庫,嘗試修復數據庫。
2.1 創建新的OS :windows server 2008 x86,安裝oracle 11.2.0.1.0 for 32-bit
版本數據庫,掛起數據庫
起庫報ORA-01110錯誤,System01.dbf需要更多一致性恢復。使用recover database 命令,利用在線日志做介質恢復。
數據庫的控制文件已被修改,需要使用控制文件恢復數據庫
恢復數據庫需要2016_01_19的11號歸檔日志。由于歸檔日志丟失,使用cancel參數進行不完全恢復。
再次執行alter database open 命令,數據庫打開。
2.2 查詢實例狀態,數據庫報ora_00600錯誤;進行其他查詢,其中一些查詢可以進行,一些查詢報錯,而且報錯都是ora_00600錯誤。
2.4查看警告日志 追蹤文件查看內部錯誤代碼;
警告日志部分內容如下:
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.
進行各種嘗試 ,查閱大量資料。數據庫的這種內部錯誤,不能通過命令修復。嘗試導出數據庫。
2.3 用expdp/exp工具導出數據庫;
2.3.1使用expdp導出數據庫
expdp 導出數據庫報錯,和上面查詢報同樣的錯誤。sysaux01.dbf文件損壞導致expdp工具不可用,導出數據庫失敗。嘗試使用exp導出數據庫
2.3.2 使用exp導出數據庫
exp導出數據庫,和上面報同樣的錯誤。數據庫報嚴重的內部錯誤,導致導出工具exp不能使用,甚至一些查詢都不能進行,導出數據庫失敗。
3解析數據文件,獲取用戶數據
由上可知,數據庫的恢復已不可能。底層解析,解析數據文件,獲取用戶對象。
3.1 使用北亞自主研發DBF解析工具的,獲取數據。結果如下:
3.2 遷移對象到數據庫中
創建數據庫,在數據庫中創建用戶,為用戶分配表空間,解鎖用戶并授權。然后,通道數據的搭橋的方式,將解析到的用戶對象遷移到數據庫中。
四、驗證數據
使用toad for oracle工具驗證數據
五、導出數據,交付用戶
5.1使用exp或者expdp導出zxfg用戶下的所有對象,本例采用exp導出數據
命令如下:
exp system/abc file=C: estdumpzxfg.dmp log=C: estdumpzxfg.log owner=zxfg
查看導出數據庫的dmp文件及導出日志,確保導出文件沒有問題。
5.2用戶導入數據,查看導入數據的完整性。
用戶驗證數據后,全部正確,并表示非常滿意
. oracle歸檔日志設置,Oracle數據庫歸檔日志設置詳解
. oracle drop表數據恢復,Oracle數據庫中drop表數據恢復方法詳解
. oracle 刪除數據文件,Oracle 數據文件刪除指南
. 如何查看oracle錯誤日志,Oracle數據庫錯誤日志查看指南
. oracle刪除的數據怎么恢復,Oracle數據庫中刪除數據恢復指南
. oracle一個實例多個數據庫,Oracle數據庫實例與多個數據庫的配置與管理
. ora-01578:oracle 數據塊損壞,oracle數據塊損壞
. oracle恢復歸檔日志文件,Oracle數據庫恢復歸檔日志文件的方法與技巧
. Oracle database 完全恢復,全面解析與操作指南