更新ORACLE資料時遇到鎖死情況的處理

來源:互聯網
上載者:User

我們在操作資料庫的 時候,有時候會由於操作不當引起資料庫表被鎖定,這麼我們經常不知所措,不知怎麼給這些表解鎖,在pl/sql Developer工具的的菜單“tools”裡面的“sessions”可以查詢現在存在的會話,但是我們很難找到那個會話被鎖定了,想找到所以被鎖的 會話就更難了。

下面是我自己通過網上的資料結合現場環境嘗試過有效殺進程解鎖的過程,比較簡單,容易操作:

查看被鎖的表:

SELECT p.spid,
      c.object_name,
      b.session_id,
      a.serial#,
      b.oracle_username,
      b.os_user_name
 FROM v$process p, v$session a, v$locked_object b, all_objects c
 WHERE p.addr = a.paddr
  AND a.process = b.process
  AND c.object_id = b.object_id;

將查詢出來的session_id,serial#,記錄下來使用如下語句進行解鎖

解鎖:
alter system kill session'b.session_id,a.serial#';


如果解鎖不成功可以嘗試在作業系統層面進行進程結束(威力很大,慎用)

[Windows]  ntsd -c q -pp.spid
[Linux]        ps -ef|grepp.spid

在linux中殺系統進程的時候先試試直接KILL,有些時候無效的情況嘗試kill -9 spid

本人遇到了好幾次此類情況都是用以上方法解決了,目前還未遇到無效的。

希望對各位有協助。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.