明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ORACLE ORA-00600出錯的闡述

[摘要]ORACLE ORA-00600錯誤不是你的程序錯誤.是ORACLE內(nèi)部的錯誤,一般來說,大部分的ORA-00600錯誤均是由ORACLE軟件的bug所導(dǎo)致,因此對于這樣的錯誤需要及時聯(lián)系ORACLE技術(shù)支持工程師.對于這種類型的ORA-00600錯誤,一個簡單的處理方式就是打補丁,將數(shù)據(jù)庫升級到...
ORACLE ORA-00600錯誤不是你的程序錯誤.是ORACLE內(nèi)部的錯誤,一般來說,大部分的ORA-00600錯誤均是由ORACLE
軟件的bug所導(dǎo)致,因此對于這樣的錯誤需要及時聯(lián)系ORACLE技術(shù)支持工程師.對于這種類型的ORA-00600錯誤,
一個簡單的處理方式就是打補丁,將數(shù)據(jù)庫升級到一個穩(wěn)定的版本,另外建議屏蔽某些ORACLE特性,諸如MTS
(MultiThread Server)。但也有部分錯誤是由
數(shù)據(jù)庫內(nèi)部的表或索引(包括應(yīng)用的)結(jié)構(gòu)被損壞所或其他原因所造成。

1:ORA-600[12700]表示執(zhí)行SQL語句時對應(yīng)的某些實體(表/索引)損壞;該
錯誤的處理方法為:
? 修改init$ORACLE_SID.ora文件,增加如下幾行:
event = “10210 trace name context forever level 10”
event = “10211 trace name context forever level 10”
event = “10231 trace name context forever level 10
? 執(zhí)行以下語句:
analyze table/index/cluster [name] validate structure;
? 如果懷疑是數(shù)據(jù)字典損壞,則不能采用以上的方法對表進(jìn)行分析,
因為在某些平臺上執(zhí)行以上操作將引起系統(tǒng)癱瘓,執(zhí)行如下存儲過程:
DBMS_UTILITY.ANALYZE_SCHEMA
例2:在對數(shù)據(jù)庫進(jìn)行讀寫操作時出現(xiàn)錯誤:ORA-00600:internal error
code,arguments:[4519],[6711],[2],…表示執(zhí)行SQL語句時的對應(yīng)的實體數(shù)據(jù)
塊[6711]的結(jié)構(gòu)被破壞所引起。該錯誤的處理方法為:
? 執(zhí)行如下的package進(jìn)行分析:
svrmgrl > select dbms_utility.data_block_address_file(6711) from dual;
svrmgrl > select dbms_utility.data_block_address_block(6711) from dual;
查找其對應(yīng)的block_id和file_id。
? 通過如下的sql命令查找出被破壞的實體類型、owner等:
svrmgrl > select segment_name,segment_type,owner
? from dba_extents
? where file_id=file# and block# between
? block_id and block_id+blocks-1;
? 如果被破壞的對象并非系統(tǒng)表或索引,則可以通過對該數(shù)據(jù)庫對象\r
進(jìn)行備份后重新創(chuàng)建實體的方法進(jìn)行。如果出現(xiàn)的錯誤為系統(tǒng)表或索引,則需要
根據(jù)實際情況進(jìn)行處理。


另外,用ResultSet來執(zhí)行插入,更新,刪除原則上是可行的,但效率很低,而且無法測試操作是否成功.


相關(guān)文章