とっても ORACLE

AUTOTRACEを使って実行計画を見る


■インデックスは使われているの?
これを簡単に調べるにはAUTOTRACEを使うと良いでしょう。

SQL*Plusを立ち上げ、SET AUTOTRACE ON と入力します。
(止めるときは、SET AUTOTRACE OFFです。)
●SQL*Plus AUTOTRACE
SET AUTOTRACE ON 〜
ON SQL文の結果ありで自動トレースを有効
TRACEONLY SQL文の結果なしで自動トレースを有効
EXPLAIN 実行結果を表示するが統計は表示しない
STATISTICS 統計を表示するが実行結果は表示しない
※前提条件として、PLAN_TABLEが作成されていなければならない。(注1)

例えば、AUTOTRACEをONにしてSQLを実行してみます。
select * from hoge where hoge_cd = '000';

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=334 Card=1 Bytes=113
          )

   1    0   TABLE ACCESS (FULL) OF 'HOGE' (Cost=334 Card=1 By
          tes=113)


HOGEテーブルはTABLE ACCESS (FULL)ということでフルスキャンになってしまっています。
次にhoge_cdにINDEXを付けてみました。

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=113)
   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'HOGE' (Cost=2 C
          ard=1 Bytes=113)

   2    1     INDEX (RANGE SCAN) OF 'HOGE_IDX1' (NON-UNIQUE)
          (Cost=1 Card=1)


INDEX (RANGE SCAN)インデックスが使われたことがわかります。

またStatistics(統計情報)の方には物理アクセスやソートがどれくらいあったかが出ます。

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        171  consistent gets
          0  physical reads
          0  redo size
      21805  bytes sent via SQL*Net to client
       1949  bytes received via SQL*Net from client
         15  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
        177  rows processed

■EXPLAIN_PLANとの違い
SQL TRACEが実際にDB上のデータを検索して結果を表示するのに対して,EXPLAINPLANは、指定したSQL文を実行するためにOracleが使う実行計画の各ステップを解析します。
つまり、実データの投入前などであれば、EXPLAIN PLANを使って理論的にチューニングポイントを探すことになります.

■お膳立て(注1)
sysユーザーで?/sqlplus/admin/plustrce.sqlを流し、
plustrace ロールを作成
 SQL>@$ORACLE_HOME/plus80/plustrace
(@C:\Oracle\Ora81\sqlplus\admin\PLUSTRCE) 8.1系forNT

AUTOTRACEを取得するユーザにロールを付加する
 SQL>grant plustrace to 任意ユーザ;

そのユーザーで?/rdbms/admin/utlxplanを流すと
実行計画を保存するためのテーブルを作成
 SQL>@$ORACLE_HOME/rdbms80/admin/utlxplan
(@C:\Oracle\Ora81\RDBMS\ADMIN\utlxplan) 8.1系forNT


オラクル Oracle 購入オラクル製品のお見積りご購入はこちら
ユーザー登録すると、オンライン特別割引価格で見積できます。


Copyright(c) 1999-2018 ITNAVI.com サイト運営者情報