oracl 鎖表 解鎖 殺死程序
1 查詢資料庫被鎖的表:
SELECT l.session_id sid,
s.serial#,
l.locked_mode 鎖模式,
l.oracle_username 登入使用者,
l.os_user_name 登入機器使用者名稱,
s.machine 機器名,
s.program 終端名,
s.terminal 終端使用者名稱,
o.object_name 被鎖物件名,
s.logon_time 登入資料庫時間
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial#;
2 刪除被鎖的表的session
alter system kill session '~sid~,~serial#~';
例:alter system kill session '1998,2815';
3 如果用alter system kill session殺不掉對應的程序的話,找出這個程序的SPID,在命令視窗,執行 orakill命令,orakill是oracle提供的一個可執行命令,格式為:orakill sid spid
(錯誤報告 -SQL 錯誤: ORA-00031: 標記要終止的會話)
(1)找出鎖表sid對應的spid
select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=1998
(2)登陸資料庫伺服器, 在命令視窗,執行 orakill ORCL 2160 (2160是spid)