ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
実行計画の取得:SQLPLUSのAUTOTRACE( EXPLAIN PLAN )
スポンサード リンク

SQLPLUSのAUTOTRACE機能を使用すると、事前準備が必要ですが簡単に実行計画が取得できます。

●事前準備
(1)PLUSTRACEロールを作成する。
「SYS」ユーザでDB接続し、下記のように「plustrce.sql」を実行してロール「PLUSTRACE」を作成する
既に、ロール「PLUSTRACE」が作成されている場合はこの処理は不要

 SQL> @$ORACLE_HOME/sqlplus/admin/plustrce.sql


(2)AUTOTRACE機能を使用するユーザにPLUSTRACEロールを付与する。
「SYS」ユーザでDB接続し、AUTOTRACE機能を使用するユーザにロール「PLUSTRACE」を付与する。

 SQL> grant plustrace to test_user01

(3)表「PLAN_TABLE」を生成する。
SQLを実行するユーザでDB接続し、下記のように「utlxplan.sql」を実行する。
既に、表「PLAN_TABLE」が対象のユーザで作成されている場合はこの処理は不要

 SQL> @%ORACLE%\rdbms\admin\utlcplan.sql


●AUTOTRACE機能の使用
SQLを実行するユーザでログインし、以下のいずれかのコマンドを実行して、実行計画と統計情報の出力切り替えをします。
・SET AUTOTRACE ON
SQLの実行結果と、実行計画と統計情報を両方出力する。

・SET AUTOTRACE OFF
実行計画や統計情報の出力を停止する。

・SET AUTOTRACE ON EXPLAIN
SQLの実行結果と、実行計画のみ出力する

・SET AUTOTRACE ON STATISTICS
SQLの実行結果と、統計情報のみ出力する

・SET AUTOTRACE TRACEONLY
SQLの実行結果を出力せずに、実行計画と統計情報のみ出力する。

・SET AUTOTRACE TRACEONLY EXPLAIN
SQLの実行結果を出力せずに、実行計画のみ出力する。

・SET AUTOTRACE TRACEONLY STATISTICS
SQLの実行結果を出力せずに、統計情報のみ出力する。



スポンサード リンク


事前準備の例

C:\>sqlplus sys/change_on_install as sysdba;  ・・・・ ユーザ「sys」でログイン

SQL*Plus: Release 10.2.0.1.0 - Production on 火 8月 14 14:08:17 2007

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> @C:\oracle\product\10.2.0\db_1\sqlplus\admin\plustrce.sql
                                 ・・・・ ロール「PLUSTRACE」生成
SQL>
SQL> grant plustrace to test;    ・・・ ユーザ「test」に権限付与

権限付与が成功しました。

SQL>
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。

C:\>sqlplus test/test    ・・・・・・ ユーザ「test」でログイン

SQL*Plus: Release 10.2.0.1.0 - Production on 火 8月 14 14:11:15 2007

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> @C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\UTLXPLAN.SQL
                               ・・・・・・ 表「PLAN_TABLE」を生成

表が作成されました。

SQL>



実行計画取得例

C:\>sqlplus test/test        ・・・・・ ユーザ「test」でログイン

SQL*Plus: Release 10.2.0.1.0 - Production on 火 8月 14 14:17:26 2007

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

 

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> SET AUTOTRACE ON   ・・・・・・ AUTOTRACE機能の開始
SQL> select * from emp;       ・・・・・・  SQL文実行

EMP_ID DEPT_ID EMP_NAME SALARY
----- -----   -------- ----------
E01   D01    なまえ1    150
E02   D02    なまえ2    200
E03   D03    なまえ3

実行計画
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 6 | 138 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 6 | 138 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------

統計
----------------------------------------------------------
   0 recursive calls
   0 db block gets
   8 consistent gets
   0 physical reads
   0 redo size
 706 bytes sent via SQL*Net to client
 385 bytes received via SQL*Net from client
   2 SQL*Net roundtrips to/from client
   0 sorts (memory)
   0 sorts (disk)
   3 rows processed

SQL> SET AUTOTRACE OFF  ・・・・・・  AUTOTRACE停止
SQL>

表「EMP」をフルスキャンしているのが分かります。上記実行計画の「TABLE ACCESS FULL」と太字にしてある箇所

スポンサード リンク


実行計画の取得:8i以前(EXPLAIN PLAN)
実行計画の取得:SQLPLUSのAUTOTRACE( EXPLAIN PLAN )
実行計画の取得:9i以降その1(V$SQL_PLAN)
実行計画の取得:9i以降その2(V$SQL_PLAN_STATISTICS_ALL)
実行計画の取得:SQLトレース、tkprof

SQLチューニングへ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ