轉載:Oracle資料塊損壞恢復總結
在恢復前使用DBV命令檢查資料檔案是否存在壞塊
dbv file=d:\oracle\oradata\mydb\RONLY.DBF blocksize=8192
檢視資料壞塊所在資料檔案號及塊號可以對錶進行一次全表掃描,如:
select count(*) from tablename;
1、 沒有備份的情況下:
1.1、使用exp/imp恢復
在這種情況下肯定會造成資料的丟失,在這種情況下應採取將資料匯出然後重建表再進行匯入的方法,來儘量恢復損壞資料塊中的資料,但是在有壞塊的情況下是不允許匯出的,如下命令:
Exp test/test file=t.dmp tables=t;
匯出命令在執行中會報ORA-01578錯誤,在這錯誤提示中會提示那個檔案號的檔案以及這個檔案中的哪個塊被損壞,如:ORA—01578:ORACLE 資料塊損壞(檔案號 4,塊號 35)
針對以上的提示首先查詢那些物件被損壞:
Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;
如果被損壞的塊是索引,通常可以透過索引重建來解決,如果損壞的是資料(segment_type為table),那麼透過設定如下內部事件使得Exp操作跳過壞塊。
Alter session set events=’10231 trace name context forever,level 10’;
然後重新執行匯出命令,匯出相關的表,然後執行Drop Table命令刪除相關表,之後重建表最後匯入資料。
1.2、使用DBMS_REPAIR恢復
用DBMS_REPAIR當然也會丟失資料。這裡不做詳細的介紹,有興趣的可以檢視oracle的線上文件
2、使用Rman進行恢復:
首先要存在Rman的最新備份集,然後執行如下命令:
RMAN>backup validate datafile 4;檢查4號資料檔案是否存在壞塊
執行查詢:select * from v$database_block_corruption where file#=4;
如果4號檔案存在壞塊的話,那麼將在結果集中有所顯示,會顯示損壞的塊號,根據顯示結果執行如下命令進行恢復:
RMAN>blockrecover datafile 4 block 35 from backupset;
該命令執行後即可恢復壞塊,並且不會造成資料丟失,但是要求資料庫必須要執行在歸檔模式下,否則RMAN無法發揮作用,而且透過RMAN做過最新的資料庫備份
3、使用bbed恢復
使用bbed恢復時必須有資料檔案的複製。
bbed就是英文block browse edit的縮寫,用來直接檢視和修改資料檔案資料的一個工具。
在windows和linux上面都有
但在linux下需要編譯:
然後把$ORACLE_HOME/rdbms/lib加到環境變數的PATH裡面,就可以直接在命令中bbed了。
BBED的預設口令為blockedit,For Oracle Internal Use only 請謹慎使用Oracle不做技術支援。
[oracle@test oracle]$ cd $ORACLE_HOME/rdbms/lib
[oracle@test lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
進入bbed後,可以使用help檢視幫助
BBED> help
bbed的詳細用法這裡不做具體介紹。
dbv file=d:\oracle\oradata\mydb\RONLY.DBF blocksize=8192
檢視資料壞塊所在資料檔案號及塊號可以對錶進行一次全表掃描,如:
select count(*) from tablename;
1、 沒有備份的情況下:
1.1、使用exp/imp恢復
在這種情況下肯定會造成資料的丟失,在這種情況下應採取將資料匯出然後重建表再進行匯入的方法,來儘量恢復損壞資料塊中的資料,但是在有壞塊的情況下是不允許匯出的,如下命令:
Exp test/test file=t.dmp tables=t;
匯出命令在執行中會報ORA-01578錯誤,在這錯誤提示中會提示那個檔案號的檔案以及這個檔案中的哪個塊被損壞,如:ORA—01578:ORACLE 資料塊損壞(檔案號 4,塊號 35)
針對以上的提示首先查詢那些物件被損壞:
Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;
如果被損壞的塊是索引,通常可以透過索引重建來解決,如果損壞的是資料(segment_type為table),那麼透過設定如下內部事件使得Exp操作跳過壞塊。
Alter session set events=’10231 trace name context forever,level 10’;
然後重新執行匯出命令,匯出相關的表,然後執行Drop Table命令刪除相關表,之後重建表最後匯入資料。
1.2、使用DBMS_REPAIR恢復
用DBMS_REPAIR當然也會丟失資料。這裡不做詳細的介紹,有興趣的可以檢視oracle的線上文件
2、使用Rman進行恢復:
首先要存在Rman的最新備份集,然後執行如下命令:
RMAN>backup validate datafile 4;檢查4號資料檔案是否存在壞塊
執行查詢:select * from v$database_block_corruption where file#=4;
如果4號檔案存在壞塊的話,那麼將在結果集中有所顯示,會顯示損壞的塊號,根據顯示結果執行如下命令進行恢復:
RMAN>blockrecover datafile 4 block 35 from backupset;
該命令執行後即可恢復壞塊,並且不會造成資料丟失,但是要求資料庫必須要執行在歸檔模式下,否則RMAN無法發揮作用,而且透過RMAN做過最新的資料庫備份
3、使用bbed恢復
使用bbed恢復時必須有資料檔案的複製。
bbed就是英文block browse edit的縮寫,用來直接檢視和修改資料檔案資料的一個工具。
在windows和linux上面都有
但在linux下需要編譯:
然後把$ORACLE_HOME/rdbms/lib加到環境變數的PATH裡面,就可以直接在命令中bbed了。
BBED的預設口令為blockedit,For Oracle Internal Use only 請謹慎使用Oracle不做技術支援。
[oracle@test oracle]$ cd $ORACLE_HOME/rdbms/lib
[oracle@test lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
進入bbed後,可以使用help檢視幫助
BBED> help
bbed的詳細用法這裡不做具體介紹。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25116248/viewspace-2122172/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中修復資料塊損壞Oracle
- Oracle塊損壞恢復(有rman備份)Oracle
- Oracle資料庫UNDO損壞後的恢復Oracle資料庫
- Oracle中匯出修復資料塊損壞Oracle
- Oracle中模擬修復資料塊損壞Oracle
- 修復損壞的資料塊
- ORACLE壞塊總結(轉)Oracle
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- Oracle資料檔案損壞恢復例項二則Oracle
- Sql server日誌損壞後的資料恢復(轉)SQLServer資料恢復
- 資料底層損壞的恢復方法—拼碎片恢復資料
- Oracle資料壞塊簡介及其恢復(dbv、BMR)Oracle
- Oracle資料庫塊的物理損壞與邏輯損壞Oracle資料庫
- [ORACLE] 系統故障資料庫恢復--資料檔案無損壞Oracle資料庫
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- index損壞恢復Index
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- 無備份的資料塊損壞恢復辦法 dbms_repairAI
- u盤檔案損壞怎麼恢復資料 u盤損壞無法讀取怎麼恢復資料
- Oracle asm磁碟損壞異常恢復OracleASM
- 資料檔案丟失損壞的恢復--
- master資料庫損壞之後的恢復AST資料庫
- 使用RMAN恢復完全損壞的資料庫資料庫
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- Oracle資料庫恢復:歸檔日誌損壞案例一則Oracle資料庫
- 探索ORACLE之RMAN_07 磁碟損壞資料丟失恢復Oracle
- 資料塊損壞ORA-1578(發現損壞塊)
- Oracle資料庫壞塊修復Oracle資料庫
- 【伺服器資料恢復】IBM儲存伺服器硬碟壞道離線、oracle資料庫損壞的資料恢復伺服器資料恢復IBM硬碟Oracle資料庫
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 學習這篇Oracle資料庫檔案壞塊損壞的恢復方法,擴充你的知識面Oracle資料庫
- 恢復SDS中壞掉的一塊硬碟的資料(轉)硬碟
- 某個資料檔案損壞完全恢復(三)
- 深入解析:段頭塊損壞bbed異常恢復
- ORACLE壞塊總結2Oracle
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- 資料恢復工具Recoverit使用教程:如何修復損壞的影片資料恢復