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

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

有谁知道为什么我在这里看到已处理的消息:

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 Database 10g 版本 10.2.0.3.0

答案1

在多消费者队列中,消息会保留在队列中,直到所有订阅者都已消费该消息。我似乎认为v$aq和之间的差异aq$MFS_MISSION_QTAB表明显示的消息v$aq仍在等待所有订阅者消费,以便将其标记为已处理。

aq$MFS_MISSION_QTAB另外,您有 2 个条目MFS_MISSION_QUEUE。这些条目有不同的所有者吗?您是否使用 RAC?

相关内容