Files
oracle/idev/mts_queue_information.sql
2026-03-12 21:23:47 +01:00

82 lines
3.9 KiB
SQL

-- +----------------------------------------------------------------------------+
-- | 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 : &current_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;