檢視鎖的資訊和alter system kill session的用法(小例子)

oracle_zsx發表於2013-08-26
當我發現了我做一個DML操作的時候被鎖住了,我解決的辦法:
 
步驟一、
SQL> col sess format a15
SQL> set linesize 200
SQL> select inst_id, decode(request,0,'Holder: ', '   Waiter: ')||sid sess, id1, id2, lmode,
     request, type ,block 
     from gv$lock  
     where (id1, id2, type) in (select id1, id2, type from gv$lock where request>0)  
     order by id1, request;
   INST_ID SESS                   ID1        ID2      LMODE    REQUEST TY      BLOCK
---------- --------------- ---------- ---------- ---------- ---------- -- ----------
         1 Holder: 127         655395        245          6          0 TX          1
         1    Waiter: 152      655395        245          0          6 TX          0
注意:
可以看出,我的會話id是152,我被鎖住了,那麼鎖住我的那個會話是127.
 
步驟二、
如果你知道127這個會話是誰,那麼你可以先通知他讓他提交自己的事務。
 
步驟三、
如果你不知道127這個會話是誰,那麼你可以聯絡管理員,讓管理員處理。
 
步驟四、
如果你是管理員,而你自己又聯絡不到127這個會話,那麼你可以殺掉他的程式:
首先查詢他的會話資訊:
SQL> select sid,serial# from v$session where sid=127;
       SID    SERIAL#
---------- ----------
       127       4407
然後殺掉他的程式:
SQL> alter system kill session '127,4407';

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29107230/viewspace-769244/,如需轉載,請註明出處,否則將追究法律責任。

相關文章