Oracle系Tips集 > TMロック(DMLエンキュー)のTips集

だいたいDBAロール持っているSYSユーザでの操作を想定しています。
Oracle系Tips集


TMロック

TMロック(DMLエンキュー)について(KROWN:46970) (ドキュメントID 1716517.1)
※基本的には上記のMOSを参照すること


ロック中のオブジェクト名やセッション情報取得

SELECT t3.sid,t3.serial#, t2.object_type, t2.owner,t2.object_name,t2.subobject_name
,t3.osuser, t3.program,t3.username
,TO_CHAR(t3.logon_time,'YYYY/MM/DD HH24:MI:SS') AS logon_time,t1.locked_mode
FROM gv$locked_object t1
LEFT JOIN dba_objects t2 ON t1.object_id = t2.object_id
LEFT JOIN gv$session t3 ON t1.inst_id = t3.inst_id AND t1.session_id = t3.sid
ORDER BY t3.sid,t2.object_name,t2.subobject_name
;


TMロックのモード

モード 内容 LMODE
RS(SS): 行共有 LMODE=2
RX(SX): 行排他 LMODE=3
S: 共有 LMODE=4
SRX(SSX): 共有行排他 LMODE=5
X: 排他 LMODE=6

各モードの互換性
要求するモード

RS RX S SRX X
――――――――――
既モ RS | 可 可 可 可 否
に| |
取ド RX | 可 可 否 否 否
得 |
さ S | 可 否 可 否 否
れ |
て SRX | 可 否 否 否 否
い |
る X | 否 否 否 否 否

各SQL文によって取得されるTMロックのモード
1) SQL文の対象表に対して取得するTMロックのモード
SELECT...FROM table,,, なし
INSERT INTO table... RX
UPDATE table... RX
DELETE FROM table... RX
SELECT...FROM table FOR UPDATE OF... RS
LOCK TABLE table IN ROW SHARE MODE RS
LOCK TABLE table IN ROW EXCLUSIVE MODE RX
LOCK TABLE table IN SHARE MODE S
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE SRX
LOCK TABLE table IN EXCLUSIVE MODE X
2) 特殊ケース
参照整合性制約が定義されている表に対してDML文を発行すると、更新対象では
ない表に対してTMロックが獲得される場合がありますが、その状況はバージョン
によって異なります。Document 1720454.1(KROWN:59405)「参照整合性制約とDMLロックについて」を
参照してください。


ページ初期作成日:2022年12月04日
ページの更新日時:2023年03月11日 (土) 10時50分14秒
ページ作成から899日目
ここを編集
最終更新:2023年03月11日 10:50