無備份的資料塊損壞恢復辦法 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- u盤檔案損壞怎麼恢復資料 u盤損壞無法讀取怎麼恢復資料
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- 資料底層損壞的恢復方法—拼碎片恢復資料
- redo損壞修復啟動資料庫辦法資料庫
- 伺服器資料損壞有辦法修復嗎?伺服器
- 【北亞資料恢復】異常斷電導致linux伺服器無法啟動,資料庫損壞的資料恢復資料恢復Linux伺服器資料庫
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- RMAN備份恢復典型案例——資料檔案存在壞快
- 資料庫備份恢復資料庫
- 隨身碟顆粒損壞資料恢復資料恢復
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- gitlab的資料備份和恢復Gitlab
- 【北亞伺服器資料恢復】EMC儲存Raid5中2塊硬碟損壞,熱備盤未啟用的資料恢復案例伺服器資料恢復AI硬碟
- 資料恢復工具Recoverit使用教程:如何修復損壞的影片資料恢復
- Mysql資料備份與恢復MySql
- 深入解析:段頭塊損壞bbed異常恢復
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- 【vSAN資料恢復案例】異常斷電導致vSAN底層資料損壞的資料恢復資料恢復
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- 【伺服器資料恢復】IBM儲存伺服器硬碟壞道離線、oracle資料庫損壞的資料恢復伺服器資料恢復IBM硬碟Oracle資料庫
- 如何恢復Hyper Backup備份的資料
- PostgreSql資料庫的備份和恢復SQL資料庫
- 電腦進水導致硬碟損壞資料恢復硬碟資料恢復
- 學習這篇Oracle資料庫檔案壞塊損壞的恢復方法,擴充你的知識面Oracle資料庫
- Mysql資料庫備份及恢復MySql資料庫
- 達夢資料庫備份恢復資料庫
- RabbitMQ如何備份與恢復資料MQ
- 磁碟資料恢復及備份工具資料恢復
- postgresql備份與恢復資料庫SQL資料庫
- 【伺服器資料恢復】伺服器reiserfs檔案系統損壞的資料恢復案例伺服器資料恢復
- 某公司伺服器raid陣列2塊硬碟損壞資料恢復成功案例伺服器AI陣列硬碟資料恢復
- macOS Catalina 已損壞無法開啟的解決辦法Mac
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫