-- +----------------------------------------------------------------------------+ -- | 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 : ¤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 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;