Dequeue by Condition Statement Has High Buffer Gets, Elapsed Time and CPU Time (Doc ID 1276457.1)

Last updated on NOVEMBER 04, 2014

Applies to:

Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.2 [Release 9.2 to 11.2]
Information in this document applies to any platform.

Symptoms

Dequeuing sessions that are using a condition are consuming very high Buffer Gets, elapsed time, and CPU time. A statement similar to the following is seen to be consuming these resources:

select tab.row_id, tab.msgid, tab.corrid, tab.priority, tab.delay, tab.expiration, tab.retry_count, tab.exception_qschema, tab.exception_queue, tab.chain_no, tab.local_order_no, tab.enq_time, tab.time_manager_info, tab.state, tab.enq_tid, tab.step_no, tab.sender_name, tab.sender_address, tab.sender_protocol, tab.dequeue_msgid, tab.user_prop, tab.user_data from "<SCHEMA>"."AQ$_<QUEUE_TABLE_NAME>_F" tab where (subscriber_id = :1 and subscriber_name = :2 and queue_evtid = :3 and delivery_mode = 'PERSISTENT') and (<dequeue condition>)


where <SCHEMA> is the queue table owner, <QUEUE_TABLE_NAME> is the queue table name, and <dequeue condition> is the condition specified in the dequeue_options.deq_condition parameter in the DBMS_AQ.DEQUEUE procedure used to dequeue messages from the queue table.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms