Files
oracle/idev/mts_user_connections.sql

99 lines
5.0 KiB
MySQL
Raw Permalink Normal View History

2026-03-12 21:23:47 +01:00
-- +----------------------------------------------------------------------------+
-- | Jeffrey M. Hunter |
-- | jhunter@idevelopment.info |
-- | www.idevelopment.info |
-- |----------------------------------------------------------------------------|
-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |
-- |----------------------------------------------------------------------------|
-- | DATABASE : Oracle |
-- | FILE : mts_user_connections.sql |
-- | CLASS : Multi-threaded Server (MTS) |
-- | PURPOSE : Display status and metrics related to MTS user connections. |
-- | |
-- | NAME : Returns the dispatcher's name. This forms part of |
-- | the operating system process name. |
-- | USERNAME : Oracle username. |
-- | STATUS : Reports the status of the circuit, and may take one |
-- | of the following values: |
-- | BREAK : The circuit had been interrupted due to a |
-- | break. |
-- | EOF : The connection is terminating, and the |
-- | circuit is about to be deleted. |
-- | OUTBOUND : The circuit represents an outbound |
-- | connection to another database. |
-- | NORMAL : The circuit represents a normal client |
-- | connection. |
-- | QUEUE : Reports on the work currently being done. One the |
-- | following values will be returned: |
-- | COMMON : A request has been placed into the |
-- | common request queue, and the circuit |
-- | is waiting for it to be picked up be a |
-- | shared server process. |
-- | DISPATCHER : Results from a request are being |
-- | returned to the client by the |
-- | dispatcher. |
-- | SERVER : A request is currently being acted upon |
-- | by a shared server process. |
-- | NONE : A circuit (or connection) is idle. |
-- | Nothing is happening. |
-- | |
-- | 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: User Connections |
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 s_username FORMAT a15 HEAD 'Username'
COLUMN c_circuit_status FORMAT a15 HEAD 'Circuit Status'
COLUMN c_circuit_queue FORMAT a15 HEAD 'Circuit Queue'
SELECT
i.instance_name instance_name
, d.name dispatcher_name
, s.username s_username
, c.status c_circuit_status
, c.queue c_circuit_queue
FROM
gv$instance i
, gv$circuit c
, gv$dispatcher d
, gv$session s
WHERE
i.inst_id = d.inst_id
AND c.inst_id = d.inst_id
AND s.inst_id = d.inst_id
AND c.dispatcher = d.paddr
AND c.saddr = s.saddr
ORDER BY
i.instance_name
, d.name
, s.username;