使用Oracle時,發現有表被鎖,又不知道是誰(或者哪個程序)鎖的,怎麼辦 ?
兩步走:
1、查找出被鎖對象的會話ID和序列號
執行如下SQL:
-- 查詢出被鎖對象,並提供 kill 腳本 SELECT S.SID, S.MACHINE, O.OBJECT_NAME, L.ORACLE_USERNAME, L.LOCKED_MODE, S.OSUSESR, 'ALTER SYSTEM KILL SESSION '''|| S.SID || ', '|| S.SERIAL#||''';' AS KILL_COMMAND FROM V$LOCKED_OBJECT L, V$SESSION S, ALL_OBJECTS O WHERE L.SESSION_ID=S.SID AND L.OBJECT_ID=O.OBJECT_ID
2、KILL
復制出第1步查詢結果中的 KILL_COMMAND 字段值,執行。
-- kill 的基本語法 ALTER SYSTEM KILL SESSION '$SID, $SERIAL#';