Oracle Advanced Queues Do Not Work With RAC
Oracle Bug 3830972
Bug 3830972 - DBMS_AQ.LISTEN ON RAC CLUSTER DOES NOT SEE NEW ENQUEUE MESSAGES
Fixed in 10.2
...
PROBLEM:
Using 2 node RAC configuration.
When using dbms_aq.listen() any enqueue made to a
queue after the listen has started is not noticed.
Enqueue happens on cluster node 1.
Both cluster nodes are listening to the queue where
enqueue happened.
If the listen is started after the message have
been queued, they are noticed almost instantly.
DIAGNOSTIC ANALYSIS:
I believe dbms_aq.listen is not supported in RAC if
the enqueue and listen happen on different nodes because
a listen call will not be posted by enqueue happening on
another node.
WORKAROUND:
If the listen is started after the messages have been queued,
they are noticed almost instanly.
...
Rediscovery Information:
To be seeing this bug the following must be true :
1. Running under a RAC environment
2. DBMS_AQ.LISTEN() on one node doesn't detect new messages enqueued on other
nodes.
Workaround:
None, other than to have a "heartbeat" dummy message posted on each node
every now and then. This obviously requires application support and is
therefore unlikely to be of use. Another alternative is to always ensure that
messages are enqueued at the node that performs the listen call.