如何將數據庫中被鎖表解鎖
我們在操作數據庫的時候,有時候會因爲操作不儅導致數據庫表被鎖定,所以我們經常會不知所措,不知道如何解鎖這些表。pl/sql developer工具的“工具”菜單中的“會話”可以查詢已有的會話,但是我們很難找到哪個會話被鎖定了,更難找到被鎖定的會話。以下查詢語句可以查詢鎖定的會話。如下:
select sn.username,m.sid,sn.serial #,m.type,
decode (m.lmode,
0,' none ',
1,' null ',
'row excl . ',
4,' share ',
5,' s/row excl . ',
6,' exclusive ',
lmode,ltrim (to_char (lmode,' 990= 0)-有鎖請求,即被阻塞
或(sn . sid = m . sid-沒有鎖請求,但被鎖定的對象被其他會話請求鎖定
和m.request = 0
和lmode!= 4
and (id1,id2) in (
select s.id1,s . id2
from v $ lock s
where request!= 0且s.id1 = m.id1
且s . id2 = m . id2)
)
order by id1,id2,m.request
通過上麪的查詢知道sid和序列號,就可以kill
alter system kill session ' SID,serial # ';
0條評論