有没有人知道为什么我在这里看到 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$aq
,aq$MFS_MISSION_QTAB
这表明其中显示的消息v$aq
仍在等待所有订阅者使用,因此可以将它们标记为已处理。此外,您还有 2 个
aq$MFS_MISSION_QTAB
条目MFS_MISSION_QUEUE
。这些是否有不同的所有者你在使用 RAC 吗?