Oracle数据库出现出ORA-00600[qertbFetchByRowID]报错处理
Oracle数据库出现出ORA-00600[qertbFetchByRowID]报错处理
一套Oracle 10g RAC出现故障强行打开库后,日志出现ORA-00600[qertbFetchByRowID]报错,详细日志如下:
Errors in file /app/oracle/admin/TESTDZ/bdump/TESTDZ1_mmon_8651138.trc:ORA-00600: internal error code, arguments: [qertbFetchByRowID], [], [], [], [],[], [], []*** SERVICE NAME:(SYS$BACKGROUND) 2014-03-06 14:30:18.483*** SESSION ID:(1090.1) 2013-01-06 14:30:18.483*** 2013-01-06 14:30:18.483ksedmp: internal or fatal errorORA-00600: internal error code, arguments: [qertbFetchByRowID], [], [], [], [],[], [], []Current SQL statement for this session:select message_level, sequence_id, time_suggested from WRI$_ALERT_OUTSTANDING whe_number = :4
其实从错误信息不难分析,导致问题的原因和索引有关,错误信息明确指出了问题发生在通过ROWID信息读取表时,而通过ROWID读取是索引扫描的标志。一般来说这种问题是索引和表上数据的逻辑损坏造成的,如果问题出现在索引上,那么最简单的办法莫过于删除重建索引,或者使用ONLINE方式重建索引。
SQL>[color=purple]select index_name,table_name,owner[color=purple] from dba_indexes where table_name ='WRI$_ALERT_OUTSTANDING';INDEX_NAME TABLE_NAME OWNER------------------------------ --------------------- -----------------------------WRI$_ALERTS_OUTSTANDING_PK WRI$_ALERT_OUTSTANDING SYS
SQL> [color=purple]alter index WRI$_ALERTS_OUTSTANDING_PK rebuild online;
重启数据库后,报错消失。