Raj,
I assume you are using persistent queues. Each
queue resides on a queue table that is nothing more than a normal table
subjected to the same problems. By default the queue tables are created with
INITRANS 1 and FREELISTS 1, like regular table.
You have to increase these parameters. Assuming
your queue table is MYQT, you would simply alter table myqt initrans 10 storage
(freelists 13).
Next, make sure you have only one queue (apart from
the exception queue) in each queue table. Oracle docs state that if the payload
of soem queues are the same, they should be in the same queue table. But in
practice, it's better to leave them in separate tables to alleviate transaction
related problems.
Next, you should move these queue tables into
some less active data files, if that is possible. This may sound incredible, but
Oracle did a lousy job in the queue implementation where they used a regular
table to hold the messages. So a dequeue is nothing more than just selecting and
deleting from the queue table.
Hope this helps.
Arup
|
Title: Queue_message wait event
- Queue_message wait event Jamadagni, Rajendra
- RE: Queue_message wait event Arup Nanda
- RE: Queue_message wait event Jamadagni, Rajendra