1. 程式人生 > >oracl 鎖表 解鎖 殺死程序

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)