Recent site activity

Oracle: topsesn.sql


/*


STATUS         SID NAME         PROGRAM                     CPU    WAITING    IO  TOTAL
------------ ----- ------------ ------------------------- ----- ---------- ----- ------
DISCONNECTED   146 SYS          ORACLE.EXE (J004)             5          0    40     45
DISCONNECTED   144 SYS          ORACLE.EXE (J005)             5          1    34     40
DISCONNECTED   144 SYSTEM                                    12         23     0     35
DISCONNECTED   148 SYSTEM                                     9         26     0     35
DISCONNECTED   152 SYSTEM                                     8         27     0     35
DISCONNECTED   145 SYSTEM                                    11         24     0     35
DISCONNECTED   143 SYSTEM                                    10         17     0     27
DISCONNECTED   152 SYSTEM                                    12         15     0     27
DISCONNECTED   153 SYSTEM                                     9         17     0     26

*/

col name for a12
col program for a25
col CPU for 9999
col IO for 9999
col TOTAL for 99999
col WAIT for 9999
col user_id for 99999
col sid for 9999

set linesize 120

select
        decode(nvl(to_char(s.sid),-1),-1,'DISCONNECTED','CONNECTED')
                                                        "STATUS",
        topsession.sid             "SID",
        u.username  "NAME",
        topsession.program                  "PROGRAM",
        max(topsession.CPU)              "CPU",
        max(topsession.WAIT)       "WAITING",
        max(topsession.IO)                  "IO",
        max(topsession.TOTAL)           "TOTAL"
        from (
select * from (
select
     ash.session_id sid,
     ash.session_serial# serial#,
     ash.user_id user_id,
     ash.program,
     sum(decode(ash.session_state,'ON CPU',1,0))     "CPU",
     sum(decode(ash.session_state,'WAITING',1,0))    -
     sum(decode(ash.session_state,'WAITING',
        decode(wait_class,'User I/O',1, 0 ), 0))    "WAIT" ,
     sum(decode(ash.session_state,'WAITING',
        decode(wait_class,'User I/O',1, 0 ), 0))    "IO" ,
     sum(decode(session_state,'ON CPU',1,1))     "TOTAL"
from v$active_session_history ash
group by session_id,user_id,session_serial#,program
order by sum(decode(session_state,'ON CPU',1,1)) desc
) where rownum < 10
   )    topsession,
        v$session s,
        all_users u
   where
        u.user_id =topsession.user_id and
        /* outer join to v$session because the session might be disconnected */
        topsession.sid         = s.sid         (+) and
        topsession.serial# = s.serial#   (+)
   group by  topsession.sid, topsession.serial#,
             topsession.user_id, topsession.program, s.username,
             s.sid,s.paddr,u.username
   order by max(topsession.TOTAL) desc
/

Comments