Find an Oracle blocking session with dba_blockers and v$lock
March 31, 2010 15:35:53 Last update: March 31, 2010 15:35:53
DBA_BLOCKERS displays a session if it is not waiting for a locked object but is holding a lock on an object for which another session is waiting.
| Column | Datatype | Description |
|---|---|---|
| HOLDING_SESSION | NUMBER | Session holding a lock |
SQL> select * from dba_blockers;
HOLDING_SESSION
---------------
364
SQL> select * from v$lock where sid = 364;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
978B3CBC 978B3CE8 364 AE 99 0 4 0 2531 0
00502BC4 00502BF4 364 TM 73541 0 3 0 2531 0
96CF4888 96CF48C8 364 TX 196617 151100 6 0 2531 1
SQL> -- find the session that's blocked
SQL> select v1.*
2 from v$lock v1, v$lock v2
3 where v1.id1 = v2.id1 and v1.id2 = v2.id2
4 and v2.sid = 364 and v2.block = 1;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
978B3E8C 978B3EB8 235 TX 196617 151100 0 6 2612 0
96CF4888 96CF48C8 364 TX 196617 151100 6 0 2640 1
SQL>
Easy email testing with http://www.ximailstop.com