您的位置:首页 > 其它

记一次ORA-600[13011]

2014-11-17 15:14 309 查看
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] "Problemoccurredwhentryingtodeletearow"
(文档
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]的报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: