oracle查看與殺掉鎖表的進程


使用oracle數據庫的過程中有可能會因為某些操作導致鎖表,一旦發生了鎖表的情況程序就無法正常使用了,因此要學會如何查看與殺掉鎖表的進程。

查看鎖表進程

select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.object_name,
       lo.locked_mode
from v$locked_object lo,
     dba_objects ao,
     v$session sess
where ao.object_id = lo.object_id
  and lo.session_id = sess.sid;

或者

select *
from v$session t1,
     v$locked_object t2
where t1.sid = t2.session_id;

殺掉鎖表進程

如果能查詢出來記錄,說明有鎖表,這時候需要記錄下sid和serial#,用於解除鎖表(即殺掉鎖表進程)。

alter system kill session 'sid, serial#';

要是殺掉了鎖表進程之后並沒有解決程序異常問題,可能是因為oracle有自己的進程管理策略,在很多情況下殺進程往往不能即時生效,這時候可以在語句末尾加上【immediately】再試試。

alter system kill session 'sid, serial#' immediately;

如果這樣還不行的話,終極解決辦法大概就是殺掉進程后重啟程序服務了。

因為鎖表導致的程序異常問題能通過殺掉鎖表進程的方式解決,但還是應該找到鎖表的原因,從根源上解決以避免問題再次產生。

 

"目的是應達到的效果(結果),目標是要達到效果的量化指標。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM