關於 資料壞塊 的整理和總結
資料庫中表,出現了壞塊。對於這個問題,在網上早就有了各種各樣的討論和解決辦法,現在總結如下,以希望在關鍵時刻能用得上:
一、 資料表出現壞塊,設定10231事件來進行EXP,然後在IMP的方法
對於這種情況來說,如果沒有熱備份,或者時間匆忙,來不及從備份中恢復,那麼我們只能丟失一部分資料,先儘可能的修復在說了。 一般情況下,出現資料壞塊,並不影響資料庫的啟動(非system 資料庫檔案損壞),但是一旦我們使用到了相關資料,就會報出類似如下資訊的錯誤:ORA-01578: ORACLE 資料塊損壞(檔案號4,塊號35),我們需要用以下的sql來進行查詢,以確保損壞的僅僅是我們資料庫中的表的資料:
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 (注意:如果是TEMP壞,則沒有返回值)
這個時候,用dbv來檢查檔案號為4的資料檔案,將會報錯誤資訊;
由於出現壞塊,EXP 在這個時候是不能進行的,我們必須設定如下事件,以讓資料庫在進行FTS的時候繞過資料壞塊:
ALTER SYTEM set EVENTS = '100231 trace name context forever, level 10';
再次進行EXP,就可以匯出資料了。
二、 用dbms_repair包 exec DBMS_REPAIR.ADMIN_TABLES('REPAIR_TABLE',1,1,'USERS');
exec DBMS_REPAIR.ADMIN_TABLES('ORPHAN_TABLE',2,1,'USERS');
exec dbms_repair.check_object(schema_name => 'SYSTEM',object_name => 'TEST',corrupt_count => cc);
select *from repair_table;
exec dbms_repair.fix_corrupt_blocks(schema_name => 'SYSTEM',object_name => 'TEST',fix_count => cc);
exec dbms_repair.skip_corrupt_blocks(schema_name => 'SYSTEM',object_name => 'TEST',flags => 1);
exec dbms_repair.dump_orphan_keys(schema_name => 'SYSTEM',object_name => 'I_TEST',object_type => 2,
repair_table_name => 'REPAIR_TABLE',orphan_table_name => 'ORPHAN_TABLE',key_count => CC);
exec dbms_repair.rebuild_freelists(schema_name => 'SYSTEM',object_name => 'TEST');
三、 用 9i 的特性:blockrecover 來修復壞塊 RMAN > RUN {
BLOCKRECOVER DATAFILE 2 BLOCK 12, 13 DATAFILE 7 BLOCK 5, 98, 99 DATAFILE 9 BLOCK 19;
}
RMAN > RUN {
BLOCKRECOVER DATAFILE 3 BLOCK 2,3,4,5
TABLESPACE sales DBA 4194405, 4194409, 4194412
FROM DATAFILECOPY
}
Rman > RUN {
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME 'SYSDATE-2';
}
Rman>run{blockrecover datafile 5 block 11,16 restore until sequence 8505;}
RMAN> blockrecover datafile 2 block 14 from backupset;
四、 用BBED 來修復壞塊
五、 資料塊損壞後,如何建立索引? 對於一般的索引,我們可以刪除掉該索引,然後重建;如果該索引為主鍵,我們只能先disable該主鍵,disable後,相關索引也自然沒有了,然後我們再重建索引
六、 模擬資料壞塊 我們一般用UE、winhex等軟體可以來模擬壞塊的情況。這些都是windows的情況,在unix的情況下,我們可以透過以下方法來處理: a. dd命令 b. orapatch 命令:
$orapatch open tools001.dbf write
patch>set hex --要用十六進位制
patch>display 177 --orapatch以512位元組為工作模式,假定想破壞第11個block即為:8k/512*11+1(file header)
patch>find 00400003 --選一個要編輯的點
patch>modify 00400002 --破壞
patch>exit
http://www.itpub.net/showthread.php?s=&threadid=201766&perpage=15&pagenumber=1
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7916042/viewspace-915080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於oracle synonym 的總結整理Oracle
- 轉載:Oracle資料塊損壞恢復總結Oracle
- ORACLE壞塊總結(轉)Oracle
- ORACLE壞塊總結2Oracle
- 關於資料庫鎖的總結資料庫
- Oracle壞塊問題總結Oracle
- 壞塊問題(摘抄總結)
- 關於統計資料收集的總結
- 關於Oracle塊的一些總結Oracle
- 關於修改資料庫名稱和ID的方法總結資料庫
- css+html關於文字的總結(整理中)CSSHTML
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- 區塊鏈資料總結區塊鏈
- Sqlserver關於TDE透明資料加密的使用總結SQLServer加密
- 關於oracle閃回資料歸檔的總結Oracle
- 關於MySQL 查詢表資料大小的總結MySql
- 資料檔案壞塊的製造和恢復
- 修復損壞的資料塊
- Oracle上的邏輯壞塊和物理壞塊Oracle
- 關於海量資料處理分析的經驗總結
- 關於SQL Server資料查詢基本方法的總結SQLServer
- Redis學習總結和相關資料Redis
- ORA-01578(資料塊損壞)跳過壞塊
- 資料塊損壞ORA-1578(發現損壞塊)
- 資料庫壞塊處理資料庫
- 關於Vue中插槽的理解和總結Vue
- 使用dbv和RMAN檢查資料檔案中的壞塊
- 關於近期的總結
- 關於UIWebView的總結UIWebView
- 關於BeautifulSoup的總結
- 關於HTML的總結HTML
- 關於資料結構資料結構
- 關於海量資料常用的資料結構資料結構
- 關於rpc的整理和理解RPC
- Oracle資料庫塊的物理損壞與邏輯損壞Oracle資料庫
- 關於筆試和麵試的反思總結筆試
- Oracle資料庫壞塊修復Oracle資料庫
- 關於JS的物件導向的思考和總結JS物件