首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 常見鎖模式速查手冊:7 級模式含義、觸發語句、診斷查殺腳本

     編輯:Oracle 資料庫基礎

前言:DBA 桌面必備速查表

鎖模式 (0-6) 是並發故障診斷的第一語言。本文壓縮為「模式-語句-影響-查殺」四欄速查表,附標準診斷查詢與嚴禁 OS kill -9 鐵律。

一、 7 級鎖模式速查表 (v$locked_object.locked_mode)

Mode名稱典型觸發語句兼容模式業務影響
0None--無鎖
1Null極少見全兼容標註關注
2Row-S (RS)SELECT ... FOR UPDATE
LOCK TABLE ... ROW SHARE
1,2,3,4行級共享鎖,允許並發查詢/鎖定,阻止 DDL
3Row-X (RX)INSERT/UPDATE/DELETE
LOCK TABLE ... ROW EXCLUSIVE
1,2最常見 DML 鎖,允許查詢,阻塞其他 DML/DDL
4Share (S)CREATE INDEX
LOCK TABLE ... SHARE
1,2阻止 DML,允許查詢
5S/Row-X (SRX)FK 父表 UPDATE/DELETE
LOCK TABLE ... SHARE ROW EXCLUSIVE
1阻止其他事務 DML,僅允許查詢
6Exclusive (X)ALTER/DROP/TRUNCATE TABLE
LOCK TABLE ... EXCLUSIVE
無完全獨佔,阻塞所有

二、 業務語句 → 鎖模式瞬間映射

  • SELECT ... → Mode 1 (極少見於 v$locked_object)
  • SELECT ... FOR UPDATE → Mode 2
  • INSERT/UPDATE/DELETE → Mode 3 (未提交前持有)
  • CREATE INDEX → Mode 3/4
  • Mode 2,3,4 不阻塞 DML,但阻塞 DDL (報 ORA-00054)
  • 外鍵級聯 → Mode 4/5
  • DDL → Mode 6

三、 標準診斷查詢 (DBA)

-- 1. 基礎鎖視圖
SELECT object_id, session_id, locked_mode FROM v$locked_object;

-- 2. 關聯會話詳情 (核心)
SELECT 
  o.object_name,
  l.locked_mode,
  s.sid, s.serial#,
  s.username, s.osuser, s.machine, s.program,
  s.logon_time,
  sq.sql_text
FROM v$locked_object l
JOIN v$session s ON l.session_id = s.sid
JOIN dba_objects o ON l.object_id = o.object_id
LEFT JOIN v$sql sq ON s.sql_id = sq.sql_id
ORDER BY s.logon_time;

判斷異常:LOGON_TIME 異常早 + LOCKED_MODE=3 長時間不變 → 疑似未提交事務/棄置連接。

四、 標準殺會話命令

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
  • IMMEDIATE:立即回滾、釋放鎖、標記 KILLED,客戶端下次操作收到 ORA-00028
  • 無 IMMEDIATE:標記待殺,會話下次調用才真正終止 (不推薦故障處理)

五、 ⚠️ 嚴禁 OS 層面 kill -9 進程

鐵律:只用 ALTER SYSTEM KILL SESSION,永不 kill -9 spid。

六、 常見鎖類型代碼 (v$lock.type)

  • TM — 表鎖 (DML/DDL 協調)
  • TX — 事務/行鎖 (核心並發控制)
  • MR — 介質恢復鎖
  • ST — 空間事務鎖 (SMON 合併區塊)

七、 總結

背熟「Mode 2=FOR UPDATE, Mode 3=DML, Mode 6=DDL」,手握關聯查詢腳本,心存「禁 OS kill」鐵律,並發故障 5 分鐘定位、1 分鐘解除。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
原因後果
一個 OS 進程可服務多會話 (MTS/DRCP)誤殺無關會話,業務大面積中斷
事務中斷無序回滾SMON 需額外恢復,恢復時間不可控
共享內存結構可能損壞實例不穩定,甚至需重啟
連接池感知延遲應用端大量報錯「連接重置」