System waits (user, non-idle)
set linesize 250
set verify off
set pagesize 9999
COLUMN Username FORMAT a14 HEADING 'User'
COLUMN Sid FORMAT 99999 HEADING 'Sess ID'
COLUMN blocking_session FORMAT 99999 HEADING 'Block SID'
COLUMN sql_id FORMAT a14 HEADING 'SQL ID'
COLUMN sql_hash_value FORMAT 99999999999 HEADING 'SQL Hash'
COLUMN machine FORMAT a14 HEADING 'Machine'
COLUMN program FORMAT a20 HEADING 'Program'
COLUMN last_call_et FORMAT 999,999,999 HEADING 'Last call ET'
COLUMN event FORMAT a25 HEADING 'Event name'
COLUMN sec_wait FORMAT 999,999,999 HEADING 'Time waited'
COLUMN state FORMAT a10 HEADING 'State'
COLUMN name FORMAT a25 HEADING 'Event details'
COLUMN wait_object_name FORMAT a25 HEADING 'Object Name'
select s.username, s.sid, s.sql_id, s.blocking_session, s.sql_hash_value, s.machine, s.program, s.last_call_et,
decode(w.event,'latch free',w.event||': '||l.name||' ',w.event) event, w.seconds_in_wait sec_wait, s.state,
decode(w.event,
'db file sequential read',substr(substr(d.name,instr(d.name,'\',-1)+1,length(d.name)),instr(substr(d.name,instr(d.name,'\',-1)+1,length(d.name)),'/',-1)+1,
length(substr(d.name,instr(d.name,'\',-1)+1,length(d.name))))||' '||w.p1text||'='||w.p1||' '||w.p2text||'='||w.p2||' '||w.p3text||'='||w.p3,
'db file scattered read' ,substr(substr(d.name,instr(d.name,'\',-1)+1,length(d.name)),instr(substr(d.name,instr(d.name,'\',-1)+1,length(d.name)),'/',-1)+1,
length(substr(d.name,instr(d.name,'\',-1)+1,length(d.name))))||' '||w.p1text||'='||w.p1||' '||w.p2text||'='||w.p2||' '||w.p3text||'='||w.p3,
w.p1text||'='||w.p1||' '||decode(w.p2text,null,'',w.p2text||'='||w.p2)||' '||decode(w.p3text,null,'',w.p3text||'='||w.p3)
) name,
o.owner || '.' ||o.object_name wait_object_name
from
v$session_wait w,
v$session s,
v$datafile d, v$latch l, v$process p,
dba_objects o
where w.sid = s.sid and w.p2 = l.latch#(+) and p.addr = s.paddr
and w.event not in ('Idle', 'SQL*Net message from client')
and s.type = 'USER'
and w.p1=d.file#(+)
and s.row_wait_obj# = o.object_id(+)
order by s.sql_hash_value,1
/