sql oracle CBOトレース(10053)の取得

参考文献

めちゃんこまとめてあって見やすい。。

A Look under the Hood of CBO: The 10053 Event

The 10053 trace Fileとは

オプティマイザが実行計画を生成する過程を詳細に記載したファイルのこと。実行計画の内容が意図したものになっていない場合に参照するといいかも。クエリ変換で何が起きたかを把握したいときに使うかんじ。。

初期化パラメータmax_dump_file_sizeの設定

unlimitedにする。

コード表示

alter session set max_dump_file_size=unlimited;
col name for a24;
col value for a12;
select name,value from V$PARAMETER where NAME like '%max_dump_file_size%';

max_dump_file_sizeに関しては以下を参照。

1.152 MAX_DUMP_FILE_SIZE

コード表示

[oracle@centos7 ~]$ docker exec -it orcl_18cr3_1 bash
[oracle@f285aba0589a ~]$ sqlplus aine/ORACLE_PWD@pdb1

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Feb 3 17:44:39 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Sun Feb 03 2019 15:04:53 +09:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a12;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%max_dump_file_size%';

NAME                     VALUE
------------------------ ------------
max_dump_file_size       unlimited

1 row selected.

Elapsed: 00:00:00.01

初期化パラメータtracefile_identifierの設定

吐かれたファイルを検索しやすくするために設定。

コード表示

alter session set tracefile_identifier='my_10053_trace';
col name for a24;
col value for a24;
select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';

セッション単位で設定する

コード表示

[oracle@f285aba0589a ~]$ sqlplus aine/ORACLE_PWD@pdb1

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Feb 3 17:50:22 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Sun Feb 03 2019 17:50:07 +09:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a24;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';

NAME                     VALUE
------------------------ ------------------------
tracefile_identifier

1 row selected.

Elapsed: 00:00:00.02
AINE@pdb1> alter session set tracefile_identifier='my_10053_trace';

Session altered.

Elapsed: 00:00:00.00
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';

NAME                     VALUE
------------------------ ------------------------
tracefile_identifier     my_10053_trace

1 row selected.

Elapsed: 00:00:00.01

trace levelの設定とトレース開始

トレースレベルに関しては以下を参照。level1level2があり、level2のほうが情報量が少ない。

Using 10053 Trace Events

レベル トレース内容
レベル1のみ Parameters used by the optimizer
レベル1のみ Index statistics
レベル1と2両方 Column statistics
レベル1と2両方 Single Access Paths
レベル1と2両方 Join Costs
レベル1と2両方 Table Joins Considered
レベル1と2両方 Join Methods Considered (NL/MS/HA)

セッション単位で設定する

コード表示

alter session set events '10053 trace name context forever';
alter session set events '10053 trace name context forever, level 1';
alter session set events '10053 trace name context forever, level 2';

level2のほうが情報量が少なくなる分、ファイルサイズは小さくなる。基本はレベル1でいいと思う。。

コード表示

AINE@pdb1> alter session set events '10053 trace name context forever, level 1';

Session altered.

Elapsed: 00:00:00.02

調査対象のSQLの実行前に共有プールのフラッシュ!

ハードパースが実行されたSQLに対してトレースするので、以下のSQLを実行するか、適当なコメント入れてハードパースが起きるようにする!

コード表示

alter system flush shared_pool;

調査対象のSQLの実行

inlineヒントを使った以下のsqlをお試しで実行

コード表示

WITH a AS (
	SELECT /*+ inline */
		1
	FROM
		dual
		, dual
		, dual
		, dual
		, dual
		, dual
		, dual
		, dual
		, dual
		, dual
), b AS (
	SELECT /*+ inline */
		1
	FROM
		a
		, a
		, a
		, a
		, a
		, a
		, a
		, a
		, a
		, a
) SELECT
	1
  FROM
	b
	, b
	, b;
コード表示

AINE@pdb1> WITH a AS (
  2  SELECT /*+ inline */
  3  1
  4  FROM
  5  dual
  6  , dual
  7  , dual
  8  , dual
  9  , dual
 10  , dual
 11  , dual
 12  , dual
 13  , dual
 14  , dual
 15  ), b AS (
 16  SELECT /*+ inline */
 17  1
 18  FROM
 19  a
 20  , a
 21  , a
 22  , a
 23  , a
 24  , a
 25  , a
 26  , a
 27  , a
 28  , a
 29  ) SELECT
 30  1
 31    FROM
 32  b
 33  , b
 34  , b;

            1
-------------
            1

1 row selected.

Elapsed: 00:00:21.18

共有プールから解析対象SQLのSQL_IDを確認

共有プールよりsql_idを取得。

コード表示

COL con_id FOR 99
COL sql_id FOR a13
COL schema FOR a24
COL sql_text FOR a100
COL child# FOR 99999
COL exec FOR 9999

SELECT
	con_id
	, sql_id
	, parsing_schema_name AS schema
	, sql_text
	, child_number AS child#
	, executions AS exec
FROM
	v$sql
WHERE
	sql_text LIKE '%inline%'
	AND sql_text NOT LIKE '%SQL_TEXT%'
ORDER BY
	sql_id;
コード表示

AINE@pdb1> COL con_id FOR 99
AINE@pdb1> COL sql_id FOR a13
AINE@pdb1> COL schema FOR a24
AINE@pdb1> COL sql_text FOR a100
AINE@pdb1> COL child# FOR 99999
AINE@pdb1> COL exec FOR 9999
AINE@pdb1>
AINE@pdb1> SELECT
  2  con_id
  3  , sql_id
  4  , parsing_schema_name AS schema
  5  , sql_text
  6  , child_number AS child#
  7  , executions AS exec
  8  FROM
  9  v$sql
 10  WHERE
 11  sql_text LIKE '%inline%'
 12  AND sql_text NOT LIKE '%SQL_TEXT%'
 13  ORDER BY
 14  sql_id;

CON_ID SQL_ID        SCHEMA                   SQL_TEXT                                                                                             CHILD#  EXEC
------ ------------- ------------------------ ---------------------------------------------------------------------------------------------------- ------ -----
     3 0hfcqnf1j7zqd AINE                     WITH a AS ( SELECT /*+ inline */ 1 FROM dual , dual , dual , dual , dual , dual , dual , dual , dual      0     1
                                               , dual ), b AS ( SELECT /*+ inline */ 1 FROM a , a , a , a , a , a , a , a , a , a ) SELECT 1   FRO
                                              M b , b , b


1 row selected.

Elapsed: 00:00:00.10

DBMS_SQLDIAG.DUMP_TRACEの実行

DBMS_SQLDIAG.DUMP_TRACEに関しては以下を参照。

Capturing 10053 trace files continued
Oracle DBMS_SQLDIAG.DUMP_TRACE

コード表示

exec dbms_sqldiag.dump_trace('&sql_id', 0,'Compiler','my_10053_trace');
コード表示

AINE@pdb1> exec dbms_sqldiag.dump_trace('&sql_id', 0,'Compiler','my_10053_trace');
Enter value for sql_id: 0hfcqnf1j7zqd

PL/SQL procedure successfully completed.

Elapsed: 00:00:21.71

吐かれたファイルの確認

$diagnostic_dest/diag/rdbms/orcl/$ORACLE_SID/trace/配下に出力される。ファイル名は$sid_ora_$pid_$p_file_id.trc

コード表示

col name for a24
col value for a24
select name,value from V$PARAMETER where name like '%diagnostic_dest%';
コード表示

AINE@pdb1> col name for a24
AINE@pdb1> col value for a24
AINE@pdb1> select name,value from V$PARAMETER where name like '%diagnostic_dest%';

NAME                     VALUE
------------------------ ------------------------
diagnostic_dest          /opt/oracle

1 row selected.

Elapsed: 00:00:00.01

コード表示

[oracle@f285aba0589a ~]$ cd /opt/oracle/diag/rdbms/orcl/$ORACLE_SID/trace/
[oracle@f285aba0589a trace]$ pwd
/opt/oracle/diag/rdbms/orcl/ORCL/trace
[oracle@f285aba0589a trace]$ ll -lt | grep trace
-rw-r-----. 1 oracle oinstall 115760415 Feb  9 16:49 ORCL_ora_14486_my_10053_trace.trc
-rw-r-----. 1 oracle oinstall  18054743 Feb  9 16:49 ORCL_ora_14486_my_10053_trace.trm
[oracle@f285aba0589a trace]$

トレース終了

以下のSQLでトレースを終了させる

コード表示

alter session set events '10053 trace name context off';
コード表示

AINE@pdb1> alter session set events '10053 trace name context off';

Session altered.

Elapsed: 00:00:00.00
AINE@pdb1>

sqlトレースとtkprof

初期化パラメータの設定

SQL_TRACE

SQLトレースの有効化の確認

コード表示

col name for a24;
col value for a12;
select name,value from V$PARAMETER where NAME like '%sql_trace%';
コード表示

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a12;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%sql_trace%';

NAME                     VALUE
------------------------ ------------
sql_trace                FALSE

1 row selected.

Elapsed: 00:00:00.01

TRACEFILE_IDENTIFIER

tracefile_identifierを設定しておく。あとでみつけやすい。

コード表示

col name for a24;
col value for a12;
select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';
コード表示

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a12;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';

NAME                     VALUE
------------------------ ------------
tracefile_identifier

1 row selected.

Elapsed: 00:00:00.01

tracefile_identifierの設定。

コード表示

alter session set tracefile_identifier='test_trace';
コード表示

INE@pdb1> alter session set tracefile_identifier='test_trace';

Session altered.

Elapsed: 00:00:00.02
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%tracefile_identifier%';

NAME                     VALUE
------------------------ ------------
tracefile_identifier     test_trace

1 row selected.

Elapsed: 00:00:00.01

TIMED_STATISTICS

経過時間の設定ができる。デフォはできる。

コード表示

col name for a24;
col value for a12;
select name,value from V$PARAMETER where NAME like '%timed_statistics%';
コード表示

[oracle@6898242bcdd5 mnt]$ sqlplus aine/ORACLE_PWD@pdb1

SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jan 26 22:27:22 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Sat Jan 26 2019 19:28:38 +09:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a12;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%timed_statistics%';

NAME                     VALUE
------------------------ ------------
timed_statistics         TRUE

1 row selected.

Elapsed: 00:00:00.01
AINE@pdb1>

セッション単位でできるようにする。基本はセッション単位で。

コード表示

ALTER SESSION SET timed_statistics=TRUE;

USER_DUMP_DESTではなくてv$diag_infoで確認する!

トレースファイル作成場所の確認。マルチテナントアーキテクチャになった12cぐらいからこのv$diag_infoで確認する。Diag Traceに吐かれる。

コード表示

col name for a24;
col value for a100;
select name,value from V$PARAMETER where NAME like '%user_dump_dest%';
select name,value from V$diag_Info;
コード表示

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a100;
AINE@pdb1> select name,value from V$PARAMETER where NAME like '%user_dump_dest%';

NAME                     VALUE
------------------------ ----------------------------------------------------------------------------------------------------
user_dump_dest           /opt/oracle/product/18c/dbhome_1/rdbms/log

1 row selected.

Elapsed: 00:00:00.00

AINE@pdb1> col name for a24;
AINE@pdb1> col value for a100;
AINE@pdb1> select name,value from V$diag_Info;

NAME                     VALUE
------------------------ ----------------------------------------------------------------------------------------------------
Diag Enabled             TRUE
ADR Base                 /opt/oracle
ADR Home                 /opt/oracle/diag/rdbms/orcl/ORCL
Diag Trace               /opt/oracle/diag/rdbms/orcl/ORCL/trace
Diag Alert               /opt/oracle/diag/rdbms/orcl/ORCL/alert
Diag Incident            /opt/oracle/diag/rdbms/orcl/ORCL/incident
Diag Cdump               /opt/oracle/diag/rdbms/orcl/ORCL/cdump
Health Monitor           /opt/oracle/diag/rdbms/orcl/ORCL/hm
Default Trace File       /opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_30410.trc
Active Problem Count     0
Active Incident Count    0

11 rows selected.

Elapsed: 00:00:00.01

MAX_DUMP_FILE_SIZE

トレースファイルサイズの確認。

コード表示

col name for a24;
col value for a100;
select name,value from V$PARAMETER where NAME like '%max_dump_file_size%';
コード表示

AINE@pdb1> select name,value from V$PARAMETER where NAME like '%max_dump_file_size%';

NAME                     VALUE
------------------------ ----------------------------------------------------------------------------------------------------
max_dump_file_size       unlimited

1 row selected.

Elapsed: 00:00:00.01

SQLトレースの実行

セッション単位で実行できるようにする。

コード表示

ALTER SESSION SET sql_trace=TRUE;

セッション単位で終了する。

コード表示

ALTER SESSION SET sql_trace=FALSE;

PLSQLを使ってセッション単位で実行できるようにする。

コード表示

DBMS_SESSION.SET_SQL_TRACE(TRUE);

PLSQLを使ってセッション単位で終了する。

コード表示

DBMS_SESSION.SET_SQL_TRACE(FALSE);

なんかてきとうなSQL実行する

トレースしたいSQLをSQL_TRACE=TRUEの状態で実行する。

コード表示

SELECT
	s0.warehouse_code
	,s0.arrive_date
	,s0.cust_id
	,s5.cust_kbn
	,s0.store_no
	,s6.store_kbn
	,s0.prov_inst_qty
	,s1.item
	,s1.item_kbn
	,s2.loc
	,s2.ZONE
	,s2.BLOCK
	,s2.area
	,s2.LINE
	,s3.zone_kbn
	,s4.route_no
	,s4.barth_no
	,s7.cart_no
	,s8.basket_no
FROM
	aine.sales_trn s0
	,aine.item_mst@testlink s1
	,aine.loc_mst@testlink s2
	,aine.zone_mst@testlink s3
	,kuraine.route_mst@testlink s4
	,kuraine.cust_mst@testlink s5
	,kuraine.store_mst@testlink s6
	,kuraine.cart_mst@testlink s7
	,kuraine.basket_mst@testlink s8
WHERE
	s0.warehouse_code = s1.warehouse_code
AND s1.warehouse_code = s2.warehouse_code
AND s1.main_loc = s2.loc
AND s2.warehouse_code = s2.warehouse_code
AND s2.ZONE = s3.ZONE
AND s3.warehouse_code = s4.warehouse_code
AND s0.cust_id = s5.cust_id
AND s0.store_no = s6.store_no
AND s5.cart_no = s7.cart_no
AND s5.basket_no = s8.basket_no
;

SQL実行前にglogin.sql確認しておく。

SET AUTOTRACE TRACEONLYがコメントアウトされているか確認する。ちなみにSQLは実行されている。

コード表示

[oracle@6898242bcdd5 ~]$ find / -name *login*.sql -type f 2>/dev/null
/opt/oracle/product/18c/dbhome_1/sqlplus/admin/glogin.sql
[oracle@6898242bcdd5 ~]$ vim /opt/oracle/product/18c/dbhome_1/sqlplus/admin/glogin.sql
コード表示

COLUMN OTHER_PLUS_EXP FORMAT A200
COLUMN PLAN_PLUS_EXP  FORMAT A200
SET NUMWIDTH 13
SET LINESIZE 1000
SET LONG 40000
SET LONGCHUNKSIZE 40000
SET PAGESIZE 50000--1ページあたりの表示行
SET SERVEROUTPUT ON--dbms_outputの表示結果を制御
SET TAB OFF--タブをタブのままで表示するか、スペースのままで表示するか
SET TRIMSPOOL ON--行末までの空白を除去するかどうか
SET FEED ON--取得件数の表示の有無
--SET AUTOTRACE TRACEONLY
SET TIMING ON--経過時間を表示するかどうか
SET TERM OFF--@での実行時のみ、表示結果の制御
--SET HIST ON
DEFINE_EDITOR=VIM
SET SQLP "_USER'@'_CONNECT_IDENTIFIER> "

SQL実行前に下準備。

以下のsql実行しておく。トレース開始前に。ALTER SESSION SET sql_traceに関してはselect name,value from V$PARAMETER where NAME like '%sql_trace%';で変更されていることを確認する。

コード表示

col name for a24;--共通
col value for a12;--共通
select name,value from V$PARAMETER where NAME like '%sql_trace%';--共通
ALTER SESSION SET sql_trace=TRUE;--共通
alter system checkpoint;--更新系
alter system switch logfile;--更新系
alter system flush shared_pool;--検索系・更新系
alter system flush buffer_cache;--検索系・更新系
ALTER SESSION SET sql_trace=FALSE;--共通

trcファイル吐かれているか確認

別セッションでtraceファイル吐かれているか確認しておく。

コード表示

[oracle@6898242bcdd5 ~]$ cd /opt/oracle/diag/rdbms/orcl/ORCL/trace
[oracle@6898242bcdd5 trace]$ pwd
/opt/oracle/diag/rdbms/orcl/ORCL/trace
[oracle@6898242bcdd5 trace]$ ll | grep test_trace
-rw-r-----. 1 oracle oinstall  395099 Jan 27 09:20 ORCL_ora_29903_test_trace.trc
-rw-r-----. 1 oracle oinstall   31189 Jan 27 09:20 ORCL_ora_29903_test_trace.trm
[oracle@6898242bcdd5 trace]$ tkprof ORCL_ora_29903_test_trace.trc ORCL_ora_29903_test_trace.trc.tkprof

TKPROF: Release 18.0.0.0.0 - Development on Sun Jan 27 09:43:52 2019

Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.


[oracle@6898242bcdd5 trace]$ ll | grep test_trace
-rw-r-----. 1 oracle oinstall  395099 Jan 27 09:20 ORCL_ora_29903_test_trace.trc
-rw-r--r--. 1 oracle oinstall   60233 Jan 27 09:43 ORCL_ora_29903_test_trace.trc.tkprof
-rw-r-----. 1 oracle oinstall   31189 Jan 27 09:20 ORCL_ora_29903_test_trace.trm

trcファイルをtkprofで整形

出力されたtrcファイルをtkprofで整形する。対象のsqlが記載されている行数分表示するようにする。

コード表示

cat -n ファイル名 | head -終了行 | tail -`expr 終了行 - 開始行 + 1`
コード表示

[oracle@6898242bcdd5 trace]$ cat -n ORCL_ora_29903_test_trace.trc.tkprof | head -1168 | tail -`expr 1168 - 1091 + 1`
  1091  ********************************************************************************
  1092
  1093  SELECT
  1094          s0.warehouse_code
  1095          ,s0.arrive_date
  1096          ,s0.cust_id
  1097          ,s5.cust_kbn
  1098          ,s0.store_no
  1099          ,s6.store_kbn
  1100          ,s0.prov_inst_qty
  1101          ,s1.item
  1102          ,s1.item_kbn
  1103          ,s2.loc
  1104          ,s2.ZONE
  1105          ,s2.BLOCK
  1106          ,s2.area
  1107          ,s2.LINE
  1108          ,s3.zone_kbn
  1109          ,s4.route_no
  1110          ,s4.barth_no
  1111          ,s7.cart_no
  1112          ,s8.basket_no
  1113  FROM
  1114          aine.sales_trn s0
  1115          ,aine.item_mst@testlink s1
  1116          ,aine.loc_mst@testlink s2
  1117          ,aine.zone_mst@testlink s3
  1118          ,kuraine.route_mst@testlink s4
  1119          ,kuraine.cust_mst@testlink s5
  1120          ,kuraine.store_mst@testlink s6
  1121          ,kuraine.cart_mst@testlink s7
  1122          ,kuraine.basket_mst@testlink s8
  1123  WHERE
  1124          s0.warehouse_code = s1.warehouse_code
  1125  AND s1.warehouse_code = s2.warehouse_code
  1126  AND s1.main_loc = s2.loc
  1127  AND s2.warehouse_code = s2.warehouse_code
  1128  AND s2.ZONE = s3.ZONE
  1129  AND s3.warehouse_code = s4.warehouse_code
  1130  AND s0.cust_id = s5.cust_id
  1131  AND s0.store_no = s6.store_no
  1132  AND s5.cart_no = s7.cart_no
  1133  AND s5.basket_no = s8.basket_no
  1134
  1135  call     count       cpu    elapsed       disk      query    current        rows
  1136  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
  1137  Parse        1      0.01       0.10          1          0          2           0
  1138  Execute      1      0.00       0.00          0          0          0           0
  1139  Fetch     2739      0.01       0.04         23        391          0       41067
  1140  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
  1141  total     2741      0.03       0.15         24        391          2       41067
  1142
  1143  Misses in library cache during parse: 1
  1144  Optimizer mode: ALL_ROWS
  1145  Parsing user id: 103
  1146  Number of plan statistics captured: 1
  1147
  1148  Rows (1st) Rows (avg) Rows (max)  Row Source Operation
  1149  ---------- ---------- ----------  ---------------------------------------------------
  1150       41067      41067      41067  HASH JOIN  (cr=391 pr=23 pw=0 time=40779 us starts=1 cost=22 size=7186725 card=41067)
  1151           3          3          3   REMOTE  ROUTE_MST (cr=0 pr=0 pw=0 time=698 us starts=1 cost=2 size=51 card=3)
  1152       41067      41067      41067   HASH JOIN  (cr=391 pr=23 pw=0 time=32398 us starts=1 cost=20 size=6488586 card=41067)
  1153          39         39         39    REMOTE  ZONE_MST (cr=0 pr=0 pw=0 time=653 us starts=1 cost=2 size=468 card=39)
  1154       41067      41067      41067    HASH JOIN  (cr=391 pr=23 pw=0 time=22314 us starts=1 cost=17 size=5995782 card=41067)
  1155          39         39         39     REMOTE  LOC_MST (cr=0 pr=0 pw=0 time=639 us starts=1 cost=2 size=1092 card=39)
  1156       41067      41067      41067     HASH JOIN  (cr=391 pr=23 pw=0 time=11116 us starts=1 cost=15 size=4845906 card=41067)
  1157          39         39         39      REMOTE  ITEM_MST (cr=0 pr=0 pw=0 time=616 us starts=1 cost=2 size=936 card=39)
  1158        3159       3159       3159      HASH JOIN  (cr=391 pr=23 pw=0 time=5595 us starts=1 cost=13 size=296946 card=3159)
  1159           9          9          9       REMOTE  STORE_MST (cr=0 pr=0 pw=0 time=610 us starts=1 cost=2 size=234 card=9)
  1160        3159       3159       3159       HASH JOIN  (cr=391 pr=23 pw=0 time=3976 us starts=1 cost=11 size=214812 card=3159)
  1161           3          3          3        NESTED LOOPS  (cr=0 pr=0 pw=0 time=2384 us starts=1 cost=2 size=105 card=3)
  1162           3          3          3         NESTED LOOPS  (cr=0 pr=0 pw=0 time=1546 us starts=1 cost=2 size=84 card=3)
  1163           3          3          3          REMOTE  CUST_MST (cr=0 pr=0 pw=0 time=608 us starts=1 cost=2 size=63 card=3)
  1164           3          3          3          REMOTE  CART_MST (cr=0 pr=0 pw=0 time=878 us starts=3 cost=0 size=7 card=1)
  1165           3          3          3         REMOTE  BASKET_MST (cr=0 pr=0 pw=0 time=834 us starts=3 cost=0 size=7 card=1)
  1166        3159       3159       3159        TABLE ACCESS FULL SALES_TRN (cr=391 pr=23 pw=0 time=1348 us starts=1 cost=9 size=104247 card=3159)
  1167
  1168  ********************************************************************************

まとめ

ハードパースされた回数とか知りたかった!↓

コード表示

  1135  call     count       cpu    elapsed       disk      query    current        rows
  1136  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
  1137  Parse        1      0.01       0.10          1          0          2           0
  1138  Execute      1      0.00       0.00          0          0          0           0
  1139  Fetch     2739      0.01       0.04         23        391          0       41067
  1140  ------- ------  -------- ---------- ---------- ---------- ----------  ----------
  1141  total     2741      0.03       0.15         24        391          2       41067