実行計画・統計情報を取得する

トレースを取得するためには、初回だけ事前作業としてロールの作成・付与と、
格納するテーブルの作成が必要。その方法を紹介する。



PLUSTRACE ロール

SYS ユーザで接続

$ sqlplus / as sysdba

ロールの作成

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

このスクリプトでは、plustrace ロールの作成、 DBA ロール(Admin 付き)の付与、
v_$ (動的パフォーマンスビュー[v$] の元テーブル)への参照権限を付与している。

※ plustrce ロールは、drop → create しているため、既に存在する場合は、
エラーが表示されるが、その後正しくロールが再作成されていれば問題なし。

drop role plustrace
          *
行1でエラーが発生しました。:
ORA-01919: ロール'PLUSTRACE'は存在しません

SQL> create role plustrace;

ロールが作成されました。

ロールの付与

SQL> grant plustrace to <ユーザ名>;

実行計画/統計情報を取得するユーザに plustrace ロールを付与。

 

plan_table

テーブルの作成

SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql

実行計画を保存する plan_table を作成。

10g 以降は、plan_table が存在しない場合に一時テーブルに保存される仕様。
よって plan_table は必須ではないが、セッション切断後は実行計画を残らない。
任意の項目だが、特別な理由がない限り作成したほうがよいと思う。

トレースの取得

SQL> set autotrace on
SQL> 任意のSQLを実行

終了したい時は、

SQL> set autotrace off

【補足】エラー発生時の対処

「set autotrace on」で、下記のエラーが発生する場合は対処が必要。

SP2-0618: 
セッション識別子が見つかりません。PLUSTRACEロールが有効かを確認してください。
SP2-0611: 
STATISTICSレポートを使用可能にするときにエラーが発生しました。

ロールが正しく作成されているかを確認し、必要に応じて plustrce.sql を再実行。
権限が付与されていない場合、plustrace ロールの付与する。