ENABLE_OPT_TRACE プロシージャは、オプティマイザーのフルリンクトレースを有効にするために使用されます。有効になると、現在のセッションで生成される各プランの生成プロセスが追跡され、PL/SQLの内部SQLのプラン生成プロセスも含まれます。そして、SQLの実行ノードログディレクトリに追跡ファイルが生成されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
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
/* 追跡ログのLevelとログファイルの拡張子を設定する */
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