熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

如何殺死oracle死鎖進程

2013-11-13 22:26:22  來源: Oracle 

  willpower

  方法一Oracle的死鎖非常令人頭疼總結了一些點滴經驗作為學習筆記

  
 

  1查哪個過程被鎖
查V$DB_OBJECT_CACHE視圖:

  SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER=過程的所屬用戶 AND LOCKS!=;

   查是哪一個SID通過SID可知道是哪個SESSION
查V$ACCESS視圖:

  SELECT * FROM V$ACCESS WHERE OWNER=過程的所屬用戶 AND NAME=剛才查到的過程名;

   查出SID和SERIAL#
查V$SESSION視圖:

  SELECT SIDSERIAL#PADDR FROM V$SESSION WHERE SID=剛才查到的SID

  查V$PROCESS視圖:

  SELECT SPID FROM V$PROCESS WHERE ADDR=剛才查到的PADDR;

   殺進程
()先殺ORACLE進程:

  ALTER SYSTEM KILL SESSION 查出的SID查出的SERIAL#;

  ()再殺操作系統進程:

  KILL  剛才查出的SPID

ORAKILL 剛才查出的SID 剛才查出的SPID

  方法二
 

  經常在oracle的使用過程中碰到這個問題所以也總結了一點解決方法
)查找死鎖的進程
sqlplus "/as sysdba"
SELECT susernamelOBJECT_IDlSESSION_IDsSERIAL#lORACLE_USERNAMElOS_USER_NAMElPRO

  CESS FROM V$LOCKED_OBJECT lV$SESSION S WHERE lSESSION_ID=SSID; 
)kill掉這個死鎖的進程
alter system kill session ‘sidserial#’;  (其中sid=lsession_id)
)如果還不能解決
select prospid from v$session sesv$process pro where sessid=XX and sespaddr=proaddr;  
 其中sid用死鎖的sid替換
exit
ps ef|grep spid
其中spid是這個進程的進程號kill掉這個Oracle進程  


From:http://tw.wingwit.com/Article/program/Oracle/201311/19112.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.