exp-00056 ORA-8103 錯誤解決方法

wisdomone1發表於2013-01-05
exp-00056 ORA-8103 錯誤解決方法 ----------------------------
某客戶的一個表在進行分析和建索引一段時間時,均報ORA-8103錯誤。
讓我們先看看ORA-8103錯誤是個什麼樣的錯誤?
[oracle@xty ~]$ oerr ora 8103
08103, 00000, “object no longer exists”
// *Cause: The object has been deleted by another user since the operation
// began, or a prior incomplete recovery restored the database to
// a point in time during the deletion of the object.
// *Action: Delete the object if this is the result of an incomplete
// recovery.
從上面的資訊來看,引起這個錯誤的並不是由於什麼物件被刪除或者不完全恢復引起的。看來剩下的可能就是BUG或者是壞塊了。
select /*+ parallel(a 6) no_index(a) */
count(lrrq) from hz2004.HJXX_RYZPXXB a
由於表很大,100g左右,因此等了好長一段時間,就報了ORA-8103錯誤。由於不同的SQL語句(建索引、分析表和查詢表資料)都報了這個錯誤,基本可以確定是壞塊引起的問題。
由於表中有long raw型別,因此不能透過從主鍵取得ROWID再根據ROWID讀到值以後插入新表,由於查詢表有問題,匯出也不會成功。因此決定想辦法來修復這個問題:
首先要確定是哪個塊出現問題:
SQL> alter session set max_dump_file_size=unlimited;
SQL> alter session set db_file_multiblock_read_count=1;
SQL> alter session set events ‘immediate trace name trace_buffer_on level 1048576′;
SQL> alter session set events ‘10200 trace name context forever, level 1′;
SQL> select /*+ no_index(a */ count(*) from hz2004.hjxx_ryzpxxb a;
(注:經測試,在10g中,需要去掉trace_buffer_on那一個語句才會有trace,否則沒有trace檔案)
再次報錯時,檢查trace檔案,發現如下的資訊:
Consistent read started for block 11 : 09c63a9e
env: (scn: 0×0886.245ea878 xid: 0×0000.000.00000000
uba: 0×00000000.0000.00 statement num=0 parent xid:
xid: 0×0000.000.00000000
scn: 0×0000.00000000 0sch: scn: 0×0000.00000000)
從trace檔案中可以發現在讀檔案號39塊號408222時報錯。
執行:
select * from hz2004.hjxx_ryzpxxb
where rowid=dbms_rowid.rowid_create(1,7415,39,408222,0);
報ORA-08103錯誤,可以確認是39號檔案408222塊壞。
然而用dbv命令檢查39號檔案,沒有發現壞塊。
透過dd取出39號檔案408222塊,發現該塊居然是一個未格式化的塊,但是該塊在表的High water mark以下。單從該塊來說是一個好的塊,所以dbv檢查並不會報壞塊。
既然如此,我就故意做成一個壞塊,然後讓oracle跳過這個壞塊。關閉庫之後,用dd把壞塊複製出來儲存在一個檔案,然後修改該塊,使之成為一個 壞塊(很多的方法,這裡我的方法就是修改其checksum值)。然後用dd複製回去。重啟庫之後,用 dbms_repair.skip_corrupt_blocks過程設定表在讀取資料時,跳過壞塊。
再次讀取該表的所有資料,不再報錯。
客戶進行建索引和分析時也不再報錯,順利進行。
當然後續的工作,還是需要將資料匯出來再匯入,這樣更穩妥。
---------資料恢復 oracle資料庫恢復專家 13352468096 QQ:9417901 網站:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-752158/,如需轉載,請註明出處,否則將追究法律責任。

相關文章