実行計画・統計情報を取得する
トレースを取得するためには、初回だけ事前作業としてロールの作成・付与と、
格納するテーブルの作成が必要。その方法を紹介する。
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 ロールの付与する。