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