ENABLE_OPT_TRACEプロシージャは、オプティマイザーのフルリンクトレースを有効にするために使用されます。有効になると、現在のセッションの各計画生成プロセスが追跡され、PL内SQLの計画生成プロセスも含まれ、SQLの実行ノードログディレクトリに追跡ファイルが生成されます。
構文
DEFAULT_INENTIFIER constant VARCHAR2(20) := '';
DEFAULT_LEVEL constant INT := 1;
DBMS_XPLAN.ENABLE_OPT_TRACE(
sql_id IN VARCHAR2 DEFAULT '',
identifier IN VARCHAR2 DEFAULT DEFAULT_INENTIFIER,
level IN INT DEFAULT DEFAULT_LEVEL
);
パラメータの説明
| パラメータ | 説明 |
|---|---|
| sql_id | 追跡対象のSQLをマークするために使用されます。例えば、現在のテストでPLプログラムを実行し、同時にPL関数内の特定のSQLのみを追跡したい場合は、sql_id を設定してマークできます。一度 sql_id が設定されると、特定のSQLのみが追跡され、そうでない場合はすべてのSQLが追跡されます。 |
| identifier | Traceファイルの拡張子をマークするために使用され、ユーザーが自分のTraceファイルを容易に見つけられるようにします。 |
| level | 追跡レベルを設定するために使用されます。
注記: level はデータベースのキーワードであり、Oracleテナントではダブルクォーテーションマーク(「」)で囲み、MySQLテナントではバッククォート(`)で囲む必要があります。 |
例
現在のセッションのオプティマイザートレース機能を有効にします。
/* データベースに接続し、現在のセッションのオプティマイザートレース機能を有効にする */
obclient> CALL DBMS_XPLAN.ENABLE_OPT_TRACE();
Query OK, 0 rows affected
/* トレースログのレベルとログファイルの拡張子を設定 */
obclient> CALL DBMS_XPLAN.SET_OPT_TRACE_PARAMETER_IDENTIFIER=>'trace_test', `level`=>3);
Query OK, 0 rows affected
/* クエリを実行 */
obclient> SELECT * FROM t1;
Empty set
/* OBServerノードログディレクトリで、trace_testを拡張子とするトレースログを確認 */
vi /data/1/observer/log/optimizer_trace_BkkGn1_trace_test.trac
/* 現在のセッションのオプティマイザートレース機能を無効にする */
obclient> CALL DBMS_XPLAN.DISABLE_OPT_TRACE();;
Query OK, 0 rows affected