ORA-00600 : internal error code, arguments: [qertbFetchByRowID]

ysping發表於2009-08-06

檢查alert.log時發現錯誤:

Errors in file /u01/app/oracle/admin/bakdb/udump/bakdb2_ora_1097.trc:
ORA-00600 : internal error code, arguments: [qertbFetchByRowID], [], [], [], [], [], []
, []

[@more@]

這個錯誤是oracle的bug(4258825, 4000840)引起的,雖然官方宣稱這兩個bug已經在10.2.0.1版本上修復了(我們的版本是10.2.0.2),實際上看,已經修復的bug未必就不再發生。

絕對地來說Oracle在更新表時肯定會自動維護索引的, 不過由於程式的Bug(4258825, 4000840)在有些條件下Insert/Delete/Update表的記錄後, Oracle沒有維護索引, 就好象是這樣的情況, 表中有5條記錄(ID=1,2,3,4,5), 這時索引是好的, 現在刪除ID=5的記錄留下四條, 然後Oracle沒有維護這個索引還是保留了5條, 當我們發出WHERE ID=5這樣的查詢時, 就出現問題了, 因為根據ROWID找出來的記錄是不對的, 這個稱為Orphan ROWID.可以選擇重建索引來解決這個問題. 一般遇到的是Index上的記錄數比表的多, 反過來的可能是觀察不到的.

處理方法:重建索引

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

相關文章