Avoid exlusive mode locking of the queue table by DBMS_AQADM.remove_subscriber
edited Jul 9, 2013 12:08AM in GoldenGate, Streams and Distributed Database (MOSC) 3 commentsAnswered ✓
We have a queue with several subscribers. Occasionally, a process associated with one of the subscribers, crashes or gets hung, and the subscriber will not be accessed anymore.
When the process gets restarted after quite a long period of time, it will read obtain the status data directly from a database, then registers itself as a new subscriber and will start reading the incoming messages from the queue.
In the meanwhile the messages addressed to the old subscriber keep being accumulated in the queue, which results in the overgrowth of the queue table and in unnecessary waste of resources.
The rate of reading messages from the queue is essential for the system performance. If we attempted to remove the subscriber associated with the crashed process, we would stop all other operations with the queue (i.e. enqueuing messages, dequeuing messages, adding subscribers), since the deletion takes a lot of time.
When the process gets restarted after quite a long period of time, it will read obtain the status data directly from a database, then registers itself as a new subscriber and will start reading the incoming messages from the queue.
In the meanwhile the messages addressed to the old subscriber keep being accumulated in the queue, which results in the overgrowth of the queue table and in unnecessary waste of resources.
The rate of reading messages from the queue is essential for the system performance. If we attempted to remove the subscriber associated with the crashed process, we would stop all other operations with the queue (i.e. enqueuing messages, dequeuing messages, adding subscribers), since the deletion takes a lot of time.
0