There are a lot ORA-00600 [kwqitnmphe:ltbagi] errors in alert log, this error is caused by a QMON slave background process:
*** 2019-10-05 18:43:28.563 *** SESSION ID:(1906.11789) 2019-10-05 18:43:28.563 *** CLIENT ID:() 2019-10-05 18:43:28.563 *** SERVICE NAME:(SYS$BACKGROUND) 2019-10-05 18:43:28.563 *** MODULE NAME:(Streams) 2019-10-05 18:43:28.563 *** ACTION NAME:(QMON Slave) 2019-10-05 18:43:28.563 kwqitmmit during kwqitmmit:time mgr IOT proc: Error 600 in Queue Table SYS.SYS$SERVICE_METRICS_TAB kwqicaclcur: Error 600 Cursor Session Number : 1904 Cursor Session Serial : 24687 Cursor Pin Number : 24585 kwqitmmit during kwqitmmit:end proc: Error 600 in Queue Table SYS.SYS$SERVICE_METRICS_TAB kwqitptm: error 600 encountered during serving 10008981 *** 2019-10-05 18:43:28.564 ORA-00600: internal error code, arguments: [kwqitnmphe:ltbagi], [1], [0], [], [], [], [], [], [], [], [], [] OPIRIP: Uncaught error 447. Error stack: ORA-00447: fatal error in background process ORA-00600: internal error code, arguments: [kwqitnmphe:ltbagi], [1], [0], [], [], [], [], [], [], [], [], []
CAUSES
There are still historical messages without a current Subscriber (a.k.a. orphaned entries in the IOT history table).
SQL> select count(*) from AQ$_SYS$SERVICE_METRICS_TAB_H; COUNT(*) ---------- 6268766 SQL> select sub_hist.NAME, sub_hist.SUBSCRIBER#, sub_hist.MSGID, msg.QUEUE, msg.MSG_STATE from AQ$_SYS$SERVICE_METRICS_TAB_H sub_hist, AQ$SYS$SERVICE_METRICS_TAB msg where sub_hist.MSGID = msg.MSG_ID and NOT EXISTS (select sub.SUBSCRIBER_ID from aq$_SYS$SERVICE_METRICS_TAB_s sub where sub_hist.subscriber# = sub.SUBSCRIBER_ID); no rows selected
WORKAROUND
1)Purge all the messages in queue table SYS$SERVICE_METRICS_TAB.
DECLARE po dbms_aqadm.aq$_purge_options_t; BEGIN po.block := FALSE; DBMS_AQADM.PURGE_QUEUE_TABLE( queue_table => 'SYS.SYS$SERVICE_METRICS_TAB', purge_condition => NULL, purge_options => po); END; /
2)Recompile any invalid objects including possible queue and rule sets.
SQL> select owner, object_name, object_type from dba_objects where owner='SYS' and status!='VALID'; OWNER OBJECT_NAME OBJECT_TYPE ------------ ------------------- -------------- SYS SYS$SERVICE_METRICS_N RULE SET
@?/rdbms/admin/utlrp.sql
SQL> select owner, object_name, object_type from dba_objects where owner='SYS' and status!='VALID'; no rows selected