Oracle:殺死死鎖進程

模擬死鎖現象

  • 利用PL/SQL Developer工具可以很容易模擬死鎖現象。用同一個數據庫的同一個用戶登錄2個PL/SQL Developer。
  • 首先,在其中一個PL/SQL Developer隨便對數據庫的表執行一個更新操作,不要提交,狀態為“待提交”.
  • 然后,在另一個PL/SQL Developer執行同樣的操作,此時這個操作會等待前面的事務提交之后才會執行,狀態為“等待”
  • 對同一條記錄進行更新操作就會造成行死鎖現象,而對于不同的記錄進行更新操作是不會造成死鎖現象的。因為Oracle的鎖機制力度比較細,實現了行級鎖機制。

處理死鎖進程

  • 查看被鎖住的表
select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id;
  • 查看鎖住表的用戶
select b.username,b.sid,b.serial#,logon_time

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time;
  • 處理死鎖進程
alter system kill session 'SID,SERIAL#';
  • 如果有ora-00031錯誤,則在后面加immediate
alter system kill session ' SID,SERIAL#' immediate;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容