--Program : sessinfo.sql --Purpose : To find and display a list of sessions connected to the database and some useful information about them. --Usage : SQL>@sessinfo username|ALL sid|0 --Notes : After displaying the list of sessions, the script also prompts for a SID, And then uses the SID to display -- more detail about that specific session. --Example : SQL>@sessinfo sco 0 -- displays useful information for sessions of all users named like SCO% -- SQL>@sessinfo sco 123 -- displays useful information for session 123 if it has a username like SCO% --Author : Ram Razdan , ramrazdan@yahoo.com --License : Free for public use, amendment and distribution. -- Please refer https://ramrazdan.tripod.com/termsofuse.txt for full details. --Revision : Version Date Server/OS Comments -- 1.0 Aug,1998 Oracle7.1/VM-CMS Initial Revision. -- 1.1 Dec,1999 Oracle7.3/SunOS Add a join with v$process to display the client-server PIDs. -- 1.2 Oct,2000 Oracle7.3/SunOS Add a join with sys.audit_actions to display the command being executed. -- 1.2 Apr,2001 Oracle8.1/Win98 Testing Only. -- SET TERMOUT OFF ECHO OFF TIMING OFF PAUSE OFF AUTOTRACE OFF FEEDBACK 5 SET TERMOUT ON COLUMN "HitRatio" FORMAT 999.99 COLUMN "USERNAME-SID" FORMAT A18 COLUMN "Time Hr" FORMAT 099999.99 COLUMN "LogToPhy" FORMAT 09999.99 COLUMN "SessDesc" FORMAT A20 TRUNCATE COLUMN "Command" FORMAT A15 TRUNCATE COLUMN "Client-Server" FORMAT A15 COLUMN "Sql Hash ([P]rev)" FORMAT A17 SET LINESIZE 132 FEEDBACK OFF HEADING OFF UNDEFINE sid SELECT 'Total Number of Sessions connected: '||COUNT(*) FROM v$session / SET FEEDBACK ON FEEDBACK 5 HEADING ON SELECT NVL(ss.module,'#'||ss.program) "SessDesc" ,DECODE(USERENV('SESSIONID') ,AUDSID,'*'||ss.username ,DECODE(ss.username ,USER,'+'||ss.username ,' '||ss.username ) )||'-'||ss.SID "USERNAME-SID" -- ,io.consistent_gets + io.block_gets "Logical Reads" ,io.physical_reads "Physical Reads" ,100 * ( io.consistent_gets + io.block_gets - io.physical_reads) / ( DECODE(io.consistent_gets + io.block_gets,0,-1,io.consistent_gets + io.block_gets) ) "HitRatio" ,ss.process||'-'||pp.pid "Client-Server" ,aa.name "Command" -- ,((sysdate - ss.logon_time) * 24) "Time Hr" ,DECODE(ss.sql_hash_value,0,ss.prev_hash_value||'P',ss.sql_hash_value||' ') "Sql Hash ([P]rev)" -- ,(io.consistent_gets + io.block_gets - io.physical_reads)/DECODE(io.physical_reads,0,-1,io.physical_reads) "LogToPhy" -- ,ss.logon_time "LogonTime" FROM v$session ss ,v$sess_io io ,v$process pp ,sys.audit_actions aa WHERE ss.username LIKE '%'||DECODE('&1','/',USER,'ALL','','&1')||'%' AND ss.sid = DECODE(&2,0,io.sid,&2) AND ss.sid = io.sid AND ss.paddr = pp.addr -- AND ( consistent_gets + block_gets) > 0 AND aa.action = ss.command AND ss.username NOT LIKE 'TOPEND%' AND ss.username NOT LIKE '%PROXY%' ORDER BY physical_reads DESC --ORDER BY logon_time / SET TERMOUT OFF SET LINESIZE 132 TERMOUT ON FEEDBACK ON FEEDBACK 5 HEADING ON ECHO OFF VERIFY OFF SELECT sql_text FROM v$sqltext_with_newlines WHERE hash_value = (SELECT DECODE(sql_hash_value ,0,prev_hash_value ,sql_hash_value) FROM v$session WHERE sid = '&&sid') ORDER BY PIECE / --If the following script is also available remove the comment markers , remember to prefix the script with the required directory path --@showlocks