ENABLE_OPT_TRACEプロシージャは、オプティマイザーのフルリンクトレースを有効にするために使用されます。有効になると、現在のセッションの各計画生成プロセスが追跡され、PL/SQLの計画生成プロセスも含まれ、SQLの実行ノードログディレクトリに追跡ファイルが生成されます。
適用対象
この機能は、Community Edition V4.2.5以降でサポートされています。
構文
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