當我們在使用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
版本資料庫,掛起資料庫
資料庫的控制檔案已被修改,需要使用控制檔案恢復資料庫
恢復資料庫需要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], , , , ,
進行各種嘗試 ,查閱大量資料。資料庫的這種內部錯誤,不能通過命令修復。嘗試匯出資料庫。
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:\test\dump\zxfg.dmp log=c:\test\dump\zxfg.log owner=zxfg
檢視匯出資料庫的dmp檔案及匯出日誌,確保匯出檔案沒有問題。
5.2使用者匯入資料,檢視匯入資料的完整性。
使用者驗證資料後,全部正確,並表示非常滿意
MySQL 資料庫增量資料恢復案例
mysql資料庫每日零點自動全備 某天上午10點,小明莫名其妙地drop了乙個資料庫 我們需要通過全備的資料檔案,以及增量的binlog檔案進行資料恢復 利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔案增量的部分 用mysqlbinlo...
Oracle 資料庫備份恢復
用資料庫檔案恢復資料庫 1.開啟伺服器終端 2.切換到根目錄下 cd 3.切換到oracle 使用者下 su oracle 可能需要密碼 密碼 oracle 4.以系統管理員身份登入資料庫 sqlplus as sysdba 5.建立資料庫備份檔案對映路徑 可使用 create directory ...
恢復oracle資料庫誤刪資料
一 通過scn恢復刪除 1 獲得當前資料庫的scn號 select current scn from v database 切換到sys使用者或system使用者查詢 查詢到的scn號為 1499223 2 查詢當前scn號之前的scn select from 表名 as of scn 149922...