Oracle AQ – 为什么我在全局视图中看不到处理的消息?

有没有人有一个想法,为什么我看到PROCESSED消息在这里:

select 'MFS_MISSION' as queue_name, CONSUMER_NAME, MSG_STATE, count(*) from aq$MFS_MISSION_QTAB group by consumer_name, MSG_STATE QUEUE_NAME CONSUMER_NAME MSG_STATE COUNT(*) ------------- ---------------- ------------ ----------- MFS_MISSION T1 PROCESSED 143216 MFS_MISSION S1 PROCESSED 377208 

但不在这里:

 select dq.queue_table, dq.queue_type, dq.name, v$aq.waiting, V$AQ.ready, V$AQ.expired, V$AQ.total_wait, V$AQ.average_wait from V$AQ, dba_queues dq where dq.qid=v$aq.qid and dq.name like '%MISSION%' QUEUE_TABLE QUEUE_TYPE NAME WAITING READY EXPIRED TOTAL_WAIT AVERAGE_WAIT ---------------- --------------- ---------------------- ---------- -------- ---------- ------------- --------------- MFS_MISSION_QTAB EXCEPTION_QUEUE AQ$_MFS_MISSION_QTAB_E 0 0 0 0 0 MFS_MISSION_QTAB NORMAL_QUEUE MFS_MISSION_QUEUE 0 539002 0 0 0 MFS_MISSION_QTAB EXCEPTION_QUEUE AQ$_MFS_MISSION_QTAB_E 0 0 0 0 0 MFS_MISSION_QTAB NORMAL_QUEUE MFS_MISSION_QUEUE 0 480333 0 0 0 

队列保留为0,因此消息应该一旦被提交就立即处理或者完全消失。 消息的数量告诉我,他们已经积累了几个月的时间。

我会很高兴任何指针,经验或见解。

编辑:Oracle数据库10g版本10.2.0.3.0

在多个消费者队列中,消息保留在队列中,直到所有订阅者消费完消息。 我看起来像v$aqaq$MFS_MISSION_QTAB之间的差异将表明v$aq中显示的消息仍在等待所有订阅者消耗,因此可以将其标记为已处理。

另外,您在aq$MFS_MISSION_QTAB为您提供了2个条目MFS_MISSION_QUEUE 。 这些有不同的业主是你使用RAC?