首批通过分布式安全可靠测评,为关键业务系统打造
ENABLE_OPT_TRACE
更新时间:2026-07-15 20:56:55
ENABLE_OPT_TRACE 过程用于开启优化器全链路追踪。开启之后,当前 Session 的每个计划生成过程都会追踪,包括 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 租户需要使用反引号“`”包裹。 |
示例
开启当前 Session 的优化器追踪功能。
/* 连接数据库,开启当前 Session 的优化器追踪功能 */
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`=>2);
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
/* 关闭当前 Session 的优化器追踪功能 */
obclient> CALL DBMS_XPLAN.DISABLE_OPT_TRACE();;
Query OK, 0 rows affected