All,
 
We are using a third party application (Retek Warehouse management) which uses AQ as communication mechanism between processes. The problem we are facing is that the AQ query behind Dequeue is doing a full tablescan on queue table which is causing about 5Billion logical reads/day and is bringing the DB to its knees.
 
Following is the query which I gleaned from tracing the process
 
select /*+ FIRST_ROWS */ qt.rowid, qt.msgid, qt.corrid, qt.priority, qt.delay, qt.expiration, qt.retry_count, qt.exception_qschema, qt.exception_queue, qt.chain_no, qt.local_order_no, qt.enq_time, qt.time_manager_info, qt.state, qt.enq_tid, qt.step_no from PAR3214.GENERICTCP qt where q_name = :1 and state = :2 order by q_name, state, enq_time, step_no, chain_no, local_order_no for update skip locked
 
The procedure call is following
DBMS_AQ.DEQUEUE( 'par3214.' || qname, queueopts, msgprops, msg_obj, msgid );
 
Since this is an internal query, I can not change the HINT ( Itested that removing the hint drops logical reads from 2400 to 3).
 
Any ideas?
 
Thanks
Shaleen
 

Reply via email to