---
title: "全链路诊断方法 | OceanBase 文档中心"
description: 全链路诊断方法 运维人员可根据需要，通过使用 PL/SQL 程序包 DBMS_MONITOR 中相关方法，控制相关应用程序不同标识信息维度是否开启全链路诊断 trace，以及该 trace 的打点和相关信息打印到 trace 日志的策略。日志打印会根据采样频率判断是否会被采样并记录到内存中，有一定的概率打印到 tra…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.0.0 企业版

# 全链路诊断方法

更新时间：2026-06-19 10:25:10

运维人员可根据需要，通过使用 PL/SQL 程序包 DBMS_MONITOR 中相关方法，控制相关应用程序不同标识信息维度是否开启全链路诊断 trace，以及该 trace 的打点和相关信息打印到 trace 日志的策略。日志打印会根据采样频率判断是否会被采样并记录到内存中，有一定的概率打印到 trace 日志中。

## trace 打开和关闭操作

您可以通过调用 DBMS_MONITOR 包下的 trace 相关方法实现 trace 不同级别的开关模式。

在这里介绍下方法中涉及到的相关变量定义：

- `session_id`：会话 ID，可以通过 show processlist（MySQL 模式），GV$OB_PROCESSLIST 等视图查询。
 - `client_id`：客户端 ID，可以通过 GV$OB_PROCESSLIST 的 client 字段查询
 - `module_name`：模块名，可以通过 GV$OB_PROCESSLIST 的 module 字段查询。
 - `action_name`：活动名，可以通过 GV$OB_PROCESSLIST 的 action 字段查询。
 - `tenant_name`：租户名，可选项为：空值（非 null，表示当前租户）和各租户名。
 - `level`：打印日志的粒度。目前支持三个粒度等级，其中 Level1 为模块级别的粗粒度，Level3 的粒度最精细。
 - `sample_pct`：控制采样频率，取值范围为 [0,1]。
 - `record_policy`: 日志打印策略，即 trace 信息输出到日志文件中策略, 支持以下 3 种策略。

     - ALL，所有 span 和 tag 信息均打印到日志文件中, 并且是在每个 span 结束时, 就打印到日志文件中。
     - ONLY_SLOW_QUERY，当前请求为 slow query ，则该部分信息的span 和 tag 会打印到日志文件中。
     - SAMPLE_AND_SLOW_QUERY，当前请求为 slow query 则该部分信息的span 和 tag 会打印到日志文件中；其他请求信息的 span 和 tag 有一定的概率会打印到日志文件中。

更多的内容请参见相关 DBMS_MONITOR 包的定义。

### session 级别

- 打开 trace

  ```unknow
  DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(
  session_id   IN  BINARY_INTEGER DEFAULT NULL,
  level        IN  INT,
  sample_pct   IN  NUMBER,
  record_policy IN VARCHAR2);

  ```

  示例：记录当前 session 相关耗时等信息，采样频率为 50%，并且只记录 slow query，具体 SQL 如下。

  ```unknow
  call dbms_monitor.ob_session_trace_enable(null,1,0.5,'ONLY_SLOW_QUERY');

  ```
 - 关闭 trace

  ```unknow
  DBMS_MONITOR.OB_SESSION_TRACE_DISABLE(session_id   IN  BINARY_INTEGER);

  ```

  示例：关闭当前 session trace。

  ```unknow
  call dbms_monitor.ob_session_trace_disable(null);

  ```

### client_identifier 级别

- 打开 trace

  ```unknow
  DBMS_MONITOR.OB_CLIENT_ID_TRACE_ENABLE(
  client_id    IN  VARCHAR2,
  level        IN  INT,
  sample_pct   IN  NUMBER,
  record_policy IN VARCHAR2);

  ```

  示例：记录 client_id 为 jdbc 的相关耗时等信息，采样频率为 50%，并且只记录 slow query，具体 SQL 如下。

  ```unknow
  call dbms_monitor.ob_client_id_trace_enable('jdbc',1,0.5,'ONLY_SLOW_QUERY');

  ```unknow
  DBMS_MONITOR.OB_CLIENT_ID_TRACE_DISABLE(client_id IN  VARCHAR2);

  ```

  示例：关闭 client_id 为 jdbc 的 trace。

  ```unknow
  call dbms_monitor.ob_client_id_trace_disable('jdbc');

  ```

### module/action级别

- 打开 trace

  ```unknow
  DBMS_MONITOR.OB_MOD_ACT_TRACE_ENABLE(
  module_name     IN VARCHAR2 DEFAULT ANY_MODULE,
  action_name     IN VARCHAR2 DEFAULT ANY_ACTION,
  level        IN  INT,
  sample_pct   IN  NUMBER,
  record_policy IN VARCHAR2);

  ```

  示例：记录 module_name 为 backup，action_name 为 insert的相关耗时等信息，采样频率为 50%，并且只记录 slow query，具体 SQL 如下。其中的 module_name 和 action_name 通过 dbms_application_info 包的SET_MODULE 方法设置。

  ```unknow
  call dbms_application_info.set_module('backup','insert');
  call dbms_monitor.ob_mod_act_trace_enable('backup','insert',1,0.5,'ONLY_SLOW_QUERY');

  ```unknow
  DBMS_MONITOR.OB_MOD_ACT_TRACE_DISABLE(
  module_name     IN  VARCHAR2,
  action_name     IN  VARCHAR2 DEFAULT ALL_ACTIONS);

  ```

  示例：关闭 module_name 为 backup，action_name 为 insert 的 trace。

  ```unknow
  call dbms_monitor.ob_mod_act_trace_disable('backup','insert');

  ```

### 租户级别

- 打开 trace

  ```unknow
  DBMS_MONITOR.OB_TENANT_TRACE_ENABLE(
  level        IN  INT,
  sample_pct   IN  NUMBER,
  record_policy IN VARCHAR2);

  ```

  示例：记录当前租户中的耗时等信息，全部记录并全部打印，具体 SQL 如下。

  ```unknow
  call dbms_monitor.ob_tenant_trace_enable(1, 1, 'ALL');

  ```unknow
  DBMS_MONITOR.OB_TENANT_TRACE_DISABLE(tenant_name  IN VARCHAR2 DEFAULT NULL);

  ```

  示例：关闭租户名为 ORACLE 的 trace。

  ```unknow
  call dbms_monitor.ob_tenant_trace_disable('ORACLE');

  ```

  示例：关闭当前租户的 trace。

  ```unknow
  call dbms_monitor.ob_tenant_trace_disable();

  ```

相关日志信息输出到 trace.log，具体内容示例如下：

```unknow
[20xx-0x-xx 00:07:46.027232] [1751][T1_TNT_L0][T1][YB42AC12050D-0005E42565DA44B2-0-0] {"trace_id":"0005e495-f920-5adc-7cd1-3730afa11dbd","name":"sql_execute","id":"0005e426-2c2b-0755-0000-000000000005","start_ts":1658707664460666,"end_ts":1658707666027098,"parent_id":"0005e426-3355-05b6-0000-000000000002","is_follow":false}
[20xx-0x-xx 00:07:46.027234] [1751][T1_TNT_L0][T1][YB42AC12050D-0005E42565DA44B2-0-0] {"trace_id":"0005e495-f920-5adc-7cd1-3730afa11dbd","name":"pc_get_plan","id":"0005e426-5aac-d38c-0000-000000000004","start_ts":1658707664460552,"end_ts":1658707664460660,"parent_id":"0005e426-a22f-6cd4-0000-000000000003","is_follow":false}

```

更多全链路诊断的内容，请参见 [查询链路](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000000775814)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
