無備份的資料塊損壞恢復辦法 dbms_repair
如果是索引塊出錯,解決方案很簡單,透過online重建索引即可(必須加online,否則會依據出錯的索引來重建),也可採用先刪除再重建的方法;
如果是表塊出錯,步驟複雜一點,首先要把受損的塊查詢出來,讓oracle掃描表時跳過這些壞塊;然後透過CTAS方式恢復剩餘資料;最後需要藉助第三方工具修復壞塊資料。
如何判斷資料塊是否被標示?
掃描遇到ORA-1578,說明資料塊已經為software corrupt;如遇到ORA-600,則需要使用dbms_repair,再次掃描該塊時會報ORA-1578
如何再掃描時跳過software corrupt資料塊?
呼叫dbms_repair.skip_corrupt_blocks;呼叫10231事件,alter session/system set events ‘10231 trace name context forever, level n’;
具體步驟
需要先呼叫dbms_repair.admin_tables建立兩個表,一個是repair table,第二個是orphan key table
Exec dbms_repair.admin_tables(table_name => ‘repair_table’,table_type => dbms_repair.repair_table,action => dbms_repair.create_action, tablespace => ‘USERS’);
Exec dbms_repair.admin_tables(table_type => dbms_repair.orphan_table,action => dbms_repair.create_action, tablespace => ‘USERS’);
接著檢查出現壞塊的表
Exec dbms_repair.check_object(schema_name => ‘JUSTIN’, object_name => ‘TEST’, repair_table_name => ‘REPAIR_TABLE’, corrupt_count => :count);
然後打標示
Exec dbms_repair.fix_corrupt_blocks(schema_name => ‘JUSTIN’, object_name => ‘TEST’, object_type => dbms_repair.table_object, repair_table_name => ‘REPAIR_TABLE’, fix_count => :count);
以後掃描該表會跳過壞塊
Exec dbms_repair.skip_corrupt_blocksd(schema_name => ‘JUSTIN’, object_name => ‘TEST’, object_type => dbms_repair.table_object, flags=> dbms_repair.skip_flag);
此時可以透過CTAS方式重建表,如果想要原表修復,則需要重建物件的freelist,防止這個資料塊以後被加到freelist中
Exec dbms_repair.rebuild_freelists(schema_name => ‘JUSTIN’, object_name => ‘TEST’, object_type => dbms_repair.table_object);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-703504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle塊損壞恢復(有rman備份)Oracle
- 使用dbms_repair修復塊損壞AI
- 磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
- 非系統資料檔案損壞,rman備份恢復
- 備份與恢復--資料檔案損壞或丟失
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- u盤檔案損壞怎麼恢復資料 u盤損壞無法讀取怎麼恢復資料
- 修復損壞的資料塊
- 轉載:Oracle資料塊損壞恢復總結Oracle
- DBMS_REPAIR修復壞塊AI
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 備份&恢復之十三:損壞全部控制檔案
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- 資料庫在沒有備份的情況下的資料檔案損壞的恢復資料庫
- redo損壞修復啟動資料庫辦法資料庫
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- 【備份恢復】無備份線上恢復非關鍵資料檔案
- 非系統表空間損壞,rman備份恢復
- 備份&恢復之十二:損壞單個控制檔案
- 資料底層損壞的恢復方法—拼碎片恢復資料
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- ORA-01578(資料塊損壞)跳過壞塊處理辦法
- 【備份恢復】從備份恢復資料庫資料庫
- coreldraw檔案丟失(損壞)的恢復處理辦法
- ORACLE中修復資料塊損壞Oracle
- 伺服器資料損壞有辦法修復嗎?伺服器
- [ORACLE] 系統故障資料庫恢復--資料檔案無損壞Oracle資料庫
- 資料庫檔案壞塊損壞導致開啟時報錯的恢復方法資料庫
- 備份&恢復之十一:損壞當前聯機日誌
- 案例:磁碟分割槽壞掉-oracle無備份的恢復Oracle
- Oracle資料庫UNDO損壞後的恢復Oracle資料庫
- 資料檔案丟失損壞的恢復--
- master資料庫損壞之後的恢復AST資料庫
- 使用RMAN恢復完全損壞的資料庫資料庫
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- 【北亞資料恢復】異常斷電導致linux伺服器無法啟動,資料庫損壞的資料恢復資料恢復Linux伺服器資料庫
- 【備份與恢復】恢復受損的口令檔案