在Metalink上的Note 389521.1中记录了这样一个Bug及解决办法。
症状: Getting ORA-600 [qertbFetchByRowID] when using SYS.ALERT_QT
Corruption in the Index organised table associated with the queue table
The easy way to resolve the mismatch is to recreate the queue tables.
--------------------------------------------------------------------------------------------------------
NOTE: By running the script below, the tables will be recreated and the
messages in the queue will be lost
--------------------------------------------------------------------------------------------------------
1.
SQL> connect / as sysdba
SQL>alter system enable restricted session;
To drop server alert schema.
SQL>@$ORACLE_HOME/rdbms/admin/catnoalr.sql
To re-create tables, sequence, type and queue for server alert
SQL>@$ORACLE_HOME/rdbms/admin/dbmsslrt.sql
SQL>@$ORACLE_HOME/rdbms/admin/catalrt.sql
To recompile the invalid objects
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> alter system disable restricted session;
OR
2.
SQL> connect / as sysdba
SQL>alter system enable restricted session;
To drop server alert schema.
SQL>@$ORACLE_HOME/rdbms/admin/catnoalr.sql
Rerun catproc.sql
SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL> alter system disable restricted session;
这个Case提供给我们重建ALERT_QT队列表的办法。在另外一个客户的案例中,同样在这个表上出现了如下错误:
这同样是在ALERT_QT上出现了错误,所以我们实际上可以参考之前的处理方式尝试解决。
症状: Getting ORA-600 [qertbFetchByRowID] when using SYS.ALERT_QT
Trace file shows the following statement
select sum(SYSDATE - cast(NVL(qt.delay, qt.enq_time) as date)) from
"SYS"."ALERT_QT" qt, "SYS"."AQ$_ALERT_QT_I" iot
where ((iot.subscriber# != 0 and iot.subscriber# in
(select subscriber_id from "SYS"."AQ$_ALERT_QT_S"where queue_name = :1
and (bitand(subscriber_type, 1) = 1))) or (iot.subscriber# = 0 and iot.queue# = :2))
and qt.msgid = iot.msgid;
SQL> analyze table sys.ALERT_Qt validate structure cascade;
analyze table sys.ALERT_Qt validate structure cascade
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
Cause
Corruption in the Index organised table associated with the queue table
Solution
The easy way to resolve the mismatch is to recreate the queue tables.
--------------------------------------------------------------------------------------------------------
NOTE: By running the script below, the tables will be recreated and the
messages in the queue will be lost
--------------------------------------------------------------------------------------------------------
1.
SQL> connect / as sysdba
SQL>alter system enable restricted session;
To drop server alert schema.
SQL>@$ORACLE_HOME/rdbms/admin/catnoalr.sql
To re-create tables, sequence, type and queue for server alert
SQL>@$ORACLE_HOME/rdbms/admin/dbmsslrt.sql
SQL>@$ORACLE_HOME/rdbms/admin/catalrt.sql
To recompile the invalid objects
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> alter system disable restricted session;
OR
2.
SQL> connect / as sysdba
SQL>alter system enable restricted session;
To drop server alert schema.
SQL>@$ORACLE_HOME/rdbms/admin/catnoalr.sql
Rerun catproc.sql
SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL> alter system disable restricted session;
这个Case提供给我们重建ALERT_QT队列表的办法。在另外一个客户的案例中,同样在这个表上出现了如下错误:
kwqicaclcur: Error 600
Cursor Session Number : 509
Cursor Session Serial : 21274
Cursor Pin Number : 28681
Error 600 in Queue Table "SYS"."ALERT_QT"
error 600 encountered during serving 76700
*** 2010-10-25 15:00:30.744
ORA-00600: internal error code, arguments: [kclchkblk_3], [0], [184579233], [6], [], [], [], []
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00600: internal error code, arguments: [kclchkblk_3], [0], [184579233], [6], [], [], [], []
这同样是在ALERT_QT上出现了错误,所以我们实际上可以参考之前的处理方式尝试解决。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




