记一次ORA-600[13011]

mac2022-06-30  74

SunOS 5.10 Oracle 10.2.0.2.0 开发环境某一数据库出现ora-600报错。 alert.log中的报错信息: Thu Nov 13 15:11:43 2014 Errors in file /oracle/admin/sun/bdump/sun_j000_29589.trc: ORA-00600: internal error code, arguments: [13011], [298314], [4277430], [0], [4277430], [17], [], [] Thu Nov 13 15:11:45 2014 Errors in file /oracle/admin/sun/bdump/sun_j000_29589.trc: ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], [] ORA-06512: at "REPADMIN.CEF_PUSH_PURGE", line 145 ORA-06512: at line 1 在   /oracle/admin/sun/bdump/sun_j000_29589.trc trace文件中看到当前SQL是删除system.def$_aqcall的一条记录: ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [13011], [298314], [4277430], [0], [4277430], [17], [], [] Current SQL statement for this session: delete from system.def$_aqcall     where (enq_tid = :1) 根据MOS ORA -600 [13011] "Problem  occurred  when  trying  to  delete  a  row " (文档 ID  28184.1) 各参数对比; SQL> select object_type,object_name,owner from dba_objects where data_object_id='298314'; OBJECT_TYPE         OBJECT_NAME                              OWNER ------------------- ---------------------------------------- ------------------------------ TABLE               DEF$_AQCALL                              SYSTEM 关于DEF$_AQCALL表,该表是高级复制的默认队列表,从 ORA-06512: at "REPADMIN.CEF_PUSH_PURGE", line 145这边也可以看出确实是高级复制出现了问题,复制及时完成后,该表会被清空。 出现该ora-600报错是因为在更新语句中使用索引找到一条记录,然后到表中去查询时该记录不存在,出现此报错,一般解决方法是重建索引。----该段引自xifenfei( http://www.xifenfei.com/2623.html 首先对表做分析: SQL> analyze table system.DEF$_AQCALL validate structure cascade; analyze table system.DEF$_AQCALL validate structure cascade * ERROR at line 1: ORA-01499: table/index cross reference failure - see trace file SQL> select index_name,owner,status from dba_indexes where table_name='DEF$_AQCALL'; INDEX_NAME                     OWNER                          STATUS ------------------------------ ------------------------------ -------- SYS_IL0000004874C00025$$       SYSTEM                         VALID SYS_C001407                    SYSTEM                         VALID DEF$_TRANORDER                 SYSTEM                         VALID SQL> select index_name,column_name,column_position from dba_ind_columns where table_name='DEF$_AQCALL'; INDEX_NAME                     COLUMN_NAME                    COLUMN_POSITION ------------------------------ ------------------------------ --------------- SYS_C001407                    ENQ_TID                                      1 SYS_C001407                    STEP_NO                                      2 DEF$_TRANORDER                 CSCN                                         1 DEF$_TRANORDER                 ENQ_TID                                      2 比对数据:全表扫描和走索引时数据对比: SQL> select /*+ index(t DEF$_TRANORDER) */ CSCN,ENQ_TID from system.DEF$_AQCALL where CSCN is not null or ENQ_TID is not null   2  minus   3  select /*+ FULL(t1) */ CSCN,ENQ_TID from system.DEF$_AQCALL   4  /       CSCN ENQ_TID ---------- ------------------------------ 4755684454 8.37.2233719 4755684456 3.14.2235620 4755684458 8.2.2233699 4755684460 10.30.2223096 果然索引上的记录比表上的数据多了四条。 在线重建索引: SQL>alter index system. DEF$_TRANORDER rebuild onlie; Index altered. 再次对比索引上和表上的数据: SQL> select /*+ index(t DEF$_TRANORDER) */ CSCN,ENQ_TID from system.DEF$_AQCALL where CSCN is not null or ENQ_TID is not null   2  minus   3  select /*+ FULL(t1) */ CSCN,ENQ_TID from system.DEF$_AQCALL   4  / no rows selected 没有多余数据,通过对alert.log的监控,后续未发现ora-600[13011]的报错。

转载于:https://www.cnblogs.com/seven-dba/p/4354865.html

最新回复(0)