実行計画・統計情報取得の手順
ロールの作成・付与や、情報を格納するテーブルを作成するといった準備が必要。
準備と言っても大したことはなく、oracle の標準スクリプトをパシパシ叩く
くらいでさほど時間はかからない。その手順を紹介する。
SYS ユーザで接続
$ sqlplus / as sysdba
PLUSTRACE ロールの作成
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; ロールが作成されました。
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
【補足】エラー発生時の対処
SQL> set autotrace on
下記のエラーが発生する場合は対処が必要。
(問題なければ何も表示されない)
SP2-0618: セッション識別子が見つかりません。PLUSTRACEロールが有効かを確認してください。 SP2-0611: STATISTICSレポートを使用可能にするときにエラーが発生しました。
ロールが正しく作成されているかを確認し、必要に応じて plustrce.sql を再実行。
権限が付与されていない場合、plustrace ロールの付与する。