82 lines
3.9 KiB
SQL
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 : ¤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;
|
|
|