2026-03-12 20:23:15
This commit is contained in:
85
vg/locks_blocking_old.sql
Normal file
85
vg/locks_blocking_old.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
@@header
|
||||
|
||||
/*
|
||||
|
||||
Author : Vishal Gupta
|
||||
Purpose : Displays blocking locks in database
|
||||
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ -----------------------------------------
|
||||
* 27-Feb-12 Vishal Gupta Intial version
|
||||
* 18-Apr-12 Vishal Gupta Replace with gv$session with materialize hinted
|
||||
* sub-query factoring (CTE - common table extression)
|
||||
*
|
||||
*/
|
||||
|
||||
COLUMN INST_ID HEADING "I#" FORMAT 99
|
||||
COLUMN SID FORMAT a20
|
||||
COLUMN username HEADING "UserName" FORMAT a20 TRUNC
|
||||
COLUMN lock_type HEADING "Lock|type" FORMAT a4 TRUNC
|
||||
COLUMN lock_Name HEADING "Lock Name" FORMAT a22 TRUNC
|
||||
COLUMN osuser HEADING "OSUser" FORMAT a20 TRUNC
|
||||
COLUMN machine HEADING "Client|Machine" FORMAT a20 TRUNC
|
||||
COLUMN blocking_instance HEADING "Bl'ing|Inst"
|
||||
COLUMN blocking_session HEADING "Bl'ing|SID"
|
||||
COLUMN blocking_session_status HEADING "Bl'ing|Session|Status"
|
||||
COLUMN final_blocking_instance HEADING "Final|Bl'ing|Inst"
|
||||
COLUMN final_blocking_session HEADING "Final|Bl'ing|SID"
|
||||
COLUMN final_blocking_session_status HEADING "Final|Bl'ing|Session|Status"
|
||||
COLUMN program HEADING "Program" FORMAT a30 TRUNC
|
||||
COLUMN event HEADING "Event" FORMAT a30 TRUNC
|
||||
|
||||
|
||||
-- Materialize hint is needed to speed up the joins
|
||||
-- between dynamic performance view gv$session
|
||||
|
||||
-- Need to use Subquery for gv$session, otherwise session is disconnect with ORA-07445 [qksopCheckPropOpt]
|
||||
WITH sess as
|
||||
( select /*+ materialize */ s1.* from gv$session s1
|
||||
)
|
||||
, locks as
|
||||
(select /*+ materialize */ * from gv$lock where lmode = 0
|
||||
-- AND ( l.lmode = 0 OR (l.lmode > 0 AND l.block > 0))
|
||||
)
|
||||
SELECT s.inst_id
|
||||
, DECODE(level
|
||||
,1 , s.sid || ' (Blocker)'
|
||||
, ' ' || LPAD('-',(level-1)*4,'|---') || '> ' || s.sid
|
||||
)
|
||||
-- || NVL2(s2.blocking_session, ' (Blocker)', ' ')
|
||||
sid
|
||||
, s.status
|
||||
-- , l.lmode
|
||||
-- , l.request
|
||||
-- , l.block
|
||||
-- , s.lock_type
|
||||
, lt.name lock_name
|
||||
, s.username
|
||||
, s.osuser
|
||||
, s.sql_id
|
||||
, s.program
|
||||
, s.event
|
||||
-- , s.blocking_instance
|
||||
-- , s.blocking_session
|
||||
-- , s.blocking_session_status
|
||||
-- , s.final_blocking_instance
|
||||
-- , s.final_blocking_session
|
||||
-- , s.final_blocking_session_status
|
||||
FROM sess s
|
||||
LEFT OUTER JOIN sess s2 ON s2.blocking_instance = s.inst_id AND s2.blocking_session = s.sid
|
||||
LEFT OUTER JOIN locks l ON l.inst_id = s.inst_id
|
||||
AND l.sid = s.sid
|
||||
LEFT OUTER JOIN v$lock_type lt ON l.type = lt.type
|
||||
WHERE
|
||||
(
|
||||
s.blocking_session IS NOT NULL
|
||||
OR s2.sid IS NOT NULL
|
||||
)
|
||||
CONNECT BY PRIOR s.inst_id = s.blocking_instance
|
||||
AND PRIOR s.sid = s.blocking_session
|
||||
START WITH s.blocking_session IS NULL
|
||||
;
|
||||
|
||||
@@footer
|
||||
Reference in New Issue
Block a user