ablog

不器用で落着きのない技術者のメモ

ダイレクト・パス・インサートが実行されているかどうかを確認する方法

SID を確認する。

SQL> conn / as sysdba
SQL> !wget http://github.com/yoheia/yoheia/raw/master/oracle/sql/show_proc_ses_lock.sql
SQL> @show_proc_ses_lock.sql
OSPID  BLOCK    SID SERIAL# SQL_ID        USERNAME   STATUS   TY LMODE REQUEST        ID1        ID2 LOCK_TIME  HASH_VALUE ADDRESS  PLAN_HASH_VALUE SQL                  ...
----- ------ ------ ------- ------------- ---------- -------- -- ----- ------- ---------- ---------- ---------- ---------- -------- --------------- -------------------  ...

...

16117           261    5139 07bdxb0fapd19 SCOTT      ACTIVE   TX     6       0     131108     422915     2.0     480949289 93EDD7AC      1859739675 INSERT /*+ PARALLEL  ...
16117           261    5139 07bdxb0fapd19 SCOTT      ACTIVE   TM     2       0     477857          0     2.0     480949289 93EDD7AC      1859739675 INSERT /*+ PARALLEL  ...
16117           261    5139 07bdxb0fapd19 SCOTT      ACTIVE   TM     2       0     477856          0     2.0     480949289 93EDD7AC      1859739675 INSERT /*+ PARALLEL  ...
16117           261    5139 07bdxb0fapd19 SCOTT      ACTIVE   TM     6       0     476755          0     2.0     480949289 93EDD7AC      1859739675 INSERT /*+ PARALLEL  ...
16117           261    5139 07bdxb0fapd19 SCOTT      ACTIVE   HV     1       0     477000      65536     2.0     480949289 93EDD7AC      1859739675 INSERT /*+ PARALLEL  ...

...

「TM 6」と表に排他ロックがかかっているので、ダイレクト・パス・インサートが実行されててるっぽい。

SQL> col lock_type for a12
SQL> col mode_held for a12
SQL> select lock_type, mode_held from dba_locks where session_id=261;

...

HV           Null
DML          Exclusive
DML          Row-S (SS)
DML          Row-S (SS)
Transaction  Exclusive

DML Exclusive」と表に排他ロックがかかっているので、ダイレクト・パス・インサートが実行されている。