code:-
select chn_id,sid,ses_serial,status,blkr_sid,Final_BLK_SES,wait_event,Process,osuser,sql_id,Machine,program,Wait_Secs,sql_text from (SELECT wc.chain_id CHN_ID,
wc.sid,
wc.sess_serial# ses_serial,
CASE
WHEN DECODE(blocker_sid,NULL,'',blocker_sid) IS NULL
THEN 'blocker'
ELSE 'waiter'
END AS status,
DECODE(blocker_sid,NULL,'',blocker_sid) blkr_sid,
s.final_blocking_session Final_BLK_SES,
wait_event_text wait_event,
s.Process,
s.osuser,
s.sql_id,
SUBSTR(s.machine,1,INSTR(s.machine,'.',1)-1) Machine ,
SUBSTR(s.program,1,INSTR(s.program,'.',1)-1) program,
in_wait_secs Wait_Secs
,dbms_lob.substr(q.sql_text,50,1) sql_text
FROM v$wait_chains wc, gv$session s,gv$session bs,gv$instance i,gv$process p ,gv$sql q
WHERE wc.instance = i.instance_number (+)
AND s.sql_id =q.sql_id(+)
AND (wc.instance = s.inst_id (+)
AND wc.sid = s.sid
AND wc.sess_serial# = s.serial# (+))
AND (s.final_blocking_instance = bs.inst_id (+)
AND s.final_blocking_session = bs.sid (+))
AND (bs.inst_id = p.inst_id (+)
AND bs.paddr = p.addr (+))
AND ( num_waiters > 0
OR ( blocker_osid IS NOT NULL
AND in_wait_secs > 10 ) ) ---- change here for secs in wait
CONNECT BY PRIOR wc.sid = blocker_sid
AND PRIOR wc.sess_serial# = blocker_sess_serial#
AND PRIOR i.inst_id = blocker_instance
START WITH blocker_is_valid = 'FALSE')
group by chn_id,sid,ses_serial,status,blkr_sid,Final_BLK_SES,wait_event,Process,osuser,sql_id,Machine,program,Wait_Secs,sql_text
ORDER BY chn_id,wait_secs DESC;
Thank you,
Sivaram
No comments:
Post a Comment