oracle表死鎖,解決辦法

數據表或記錄被鎖住,解鎖方法
-----查鎖
SQL> SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID ORDER BY T2.LOGON_TIME; 
-----解鎖
SQL> ALTER SYSTEM KILL SESSION '10,382'; 




最近老是碰到數據庫中的數據表被鎖需要解鎖的問題,弄了一番後,現在把方法貢獻出來給大家,請大家多指教
1、select * from v$locked_object 查出被鎖定的對象,其中object_id是對象的ID,session_id是被鎖定對象有session ID;
2、select object_name, object_type from dba_objects where object_id = 剛纔查出來的object_id;(根據v$locked_object裏的object_id提出來的)
這樣來查被鎖定這個對象的名字,如果能確定是哪個TABLE被鎖並且要解鎖,則再執行
3、select sid, serial#, machine, program from v$session where sid =第1步中查出來的session_id;(是根據v$locked_object對應鎖定記錄的session_id找出來的) 然後
4、alter system kill session ‘sid,serial#’;用來殺死這個會話;
以上幾個步驟即能解決對象被鎖定問題。

另外附上鎖定一個表的語句:
LOCK TABLE tablename IN EXCLUSIVE MODE;將鎖定整個表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章