2026-03-12 20:23:15
This commit is contained in:
63
vdh/investigate_blocking_locks.sql
Normal file
63
vdh/investigate_blocking_locks.sql
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
-- who is blocked
|
||||
set linesize 120
|
||||
column lmode format 99 heading LM
|
||||
column request format 99 heading RQ
|
||||
|
||||
select A.sid, serial#, B.type, lmode, request, block, ctime, row_wait_obj#, row_wait_file#, row_wait_block#, row_wait_row#
|
||||
from v$session A, v$lock B
|
||||
where A.sid = B.sid
|
||||
and lockwait is not null
|
||||
order by A.sid, B.type;
|
||||
|
||||
|
||||
-- who is blocking
|
||||
select A.sid, serial#, B.type, lmode, request, block, ctime, row_wait_obj#, row_wait_file#, row_wait_block#, row_wait_row#
|
||||
from v$session A, v$lock B
|
||||
where A.sid = B.sid
|
||||
and A.sid in
|
||||
( select sid
|
||||
from v$lock
|
||||
where block != 0
|
||||
)
|
||||
order by A.sid, B.type;
|
||||
|
||||
|
||||
-- blocking session info
|
||||
set linesize 170
|
||||
set verify off
|
||||
|
||||
column username format a20
|
||||
column program format a15
|
||||
column osuser format a15
|
||||
column machine format a25
|
||||
column inac format a10
|
||||
|
||||
select sess.sid, sess.serial#, sess.username, sess.program, sess.osuser,
|
||||
sess.machine, sess.sql_id, sess.sql_child_number,
|
||||
extract(hour from (systimestamp + last_call_et/24/60/60 - systimestamp)) || ':' ||
|
||||
extract(minute from (systimestamp + last_call_et/24/60/60 - systimestamp)) || ':' ||
|
||||
round(extract(second from (systimestamp + last_call_et/24/60/60 - systimestamp))) inac
|
||||
from v$session sess
|
||||
where sess.sid in
|
||||
( select sid
|
||||
from v$lock
|
||||
where block != 0
|
||||
)
|
||||
order by sess.sid;
|
||||
|
||||
-- object involved
|
||||
select object_type, owner, object_name
|
||||
from dba_objects
|
||||
where object_id = &1;
|
||||
|
||||
-- which sql statement (current sql, not necessary the statement that caused the lock)
|
||||
select sql_text
|
||||
from v$sqltext_with_newlines
|
||||
where (address, hash_value)
|
||||
= ( select sql_address, sql_hash_value
|
||||
from v$session
|
||||
where sid = &sid
|
||||
)
|
||||
order by piece;
|
||||
|
||||
Reference in New Issue
Block a user