首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 死鎖進程精準定位與雙層殺進程實戰

     編輯:Oracle 資料庫相關知識

四步定位法:從被鎖物件 → OS 進程

1. 找被鎖物件

SELECT * FROM V$DB_OBJECT_CACHE
WHERE OWNER = '目標用戶' AND LOCKS != '0';

2. 找持有鎖的 SID

SELECT * FROM V$ACCESS
WHERE OWNER = '目標用戶' AND NAME = '上一步查到的物件名';

3. 取得 SID、SERIAL#、PADDR、SPID

SELECT SID, SERIAL#, PADDR FROM V$SESSION WHERE SID = '上一步SID';
SELECT SPID FROM V$PROCESS WHERE ADDR = '上一步PADDR';

4. 雙層殺進程

-- 第 1 層:Oracle 邏輯層(標記 Session 為 KILLED)
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

-- 第 2 層:OS 物理層(徹底釋放資源)
-- Linux/Unix
KILL -9 SPID
-- Windows
ORAKILL SID SPID
-- 例:ORAKILL ORCL 12345

關鍵提醒

  • ALTER SYSTEM KILL SESSION 只是打標記,Session 可能因長時間回滾而長時間處於 KILLED 狀態,必須配合 OS 層 KILL -9 或 ORAKILL 徹底終結。
  • 生產環境殺進程前**務必確認業務影響**,必要時協調應用端重連。
  • 頻發死鎖應從應用邏輯(鎖表順序、提交頻率、索引缺失)根治,而非依賴事後殺進程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved