如何查詢鎖等待

1)查看當前的用戶會話和對應的鎖信息 
select s.sid,s.SERIAL#,s.USERNAME,s.STATUS,l.ID1,l.LMODE,l.REQUEST
 from v$session s,v$lock l
 where s.SID=l.SID and s.USERNAME is not null;
說明:
a.  username字段爲空-------後臺進程會話
b.  request字段-----------會話申請的鎖類型
  • 0 - none
  • 1 - null (NULL)
  • 2 - row-S (SS)
  • 3 - row-X (SX)
  • 4 - share (S)
  • 5 - S/Row-X (SSX)
  • 6 - exclusive (X)
c.  lmode字段-----------會話持有鎖類型
  • 0 - none
  • 1 - null (NULL)
  • 2 - row-S (SS)
  • 3 - row-X (SX)
  • 4 - share (S)
  • 5 - S/Row-X (SSX)
  • 6 - exclusive (X)
2)查看造成鎖等待的鎖的信息
 
select l.ID1,l.LMODE,l.REQUEST
 from v$session s,v$lock l
 where s.LOCKWAIT=l.KADDR;
3)查找造成鎖等待的會話信息
select s.SID,s.SERIAL#
 from v$session s,v$lock l
 where l.ID1 in (select distinct l2.ID1 from v$session s2,v$lock l2 where s2.LOCKWAIT=l2.KADDR)
       and s.SID=l.SID and l.LMODE<>0;
4)kill掉不釋放鎖的會話
alter system kill session 'sid,serial#';   --sid,serial# 爲3)中查詢
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章