-- +----------------------------------------------------------------------------+ -- | Jeffrey M. Hunter | -- | jhunter@idevelopment.info | -- | www.idevelopment.info | -- |----------------------------------------------------------------------------| -- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. | -- |----------------------------------------------------------------------------| -- | DATABASE : Oracle | -- | FILE : mts_queue_information.sql | -- | CLASS : Multi-threaded Server (MTS) | -- | PURPOSE : Display status and metrics related to MTS queue information. | -- | You can get an idea of how well work is flowing through the | -- | request and response queues by using v$queue. The DECODE in the | -- | query handles the case where the TOTALQ column, which is the | -- | divisor, happens to be zero. | -- | | -- | The average wait time is reported in hundreths of a second. | -- | (i.e. If the average wait time of a dispatcher is 37, works out | -- | to 0.37 seconds.) | -- | | -- | The COMMON queue is where requests are placed so that they can | -- | be picked up and executed by a shared server process. If you | -- | average wait time is high, you might be able to lower it by | -- | creating more shared server processes. | -- | | -- | This script is RAC enabled. | -- | | -- | NOTE : As with any code, ensure to test this script in a development | -- | environment before attempting to run it in production. | -- +----------------------------------------------------------------------------+ SET TERMOUT OFF; COLUMN current_instance NEW_VALUE current_instance NOPRINT; SELECT rpad(instance_name, 17) current_instance FROM v$instance; SET TERMOUT ON; PROMPT PROMPT +------------------------------------------------------------------------+ PROMPT | Report : Multi-threaded Server: Queue Information | PROMPT | Instance : ¤t_instance | PROMPT +------------------------------------------------------------------------+ SET ECHO OFF SET FEEDBACK 6 SET HEADING ON SET LINESIZE 180 SET PAGESIZE 50000 SET TERMOUT ON SET TIMING OFF SET TRIMOUT ON SET TRIMSPOOL ON SET VERIFY OFF CLEAR COLUMNS CLEAR BREAKS CLEAR COMPUTES COLUMN instance_name FORMAT a10 HEAD 'Instance' COLUMN dispatcher_name FORMAT a16 HEAD 'Dispatcher Name' COLUMN queue_type FORMAT a13 HEAD 'Queue Type' COLUMN queued HEAD 'Queued' COLUMN awt FORMAT 999.99 HEAD 'Average_Wait_Time' SELECT i.instance_name instance_name , d.name dispatcher_name , q.type queue_type , q.queued queued , DECODE(q.totalq,0,0,q.wait/q.totalq) awt FROM gv$instance i , gv$queue q , gv$dispatcher d WHERE i.inst_id = q.inst_id AND d.inst_id = q.inst_id AND d.paddr = q.paddr ORDER BY i.instance_name , d.name;