---
title: "SQL 详情收集 - 敏捷诊断工具 V3.7.1 | OceanBase 文档中心"
description: SQL 详情收集 本文适用于独立部署 obdiag 的场景，使用 obdiag gather plan_monitor 命令可以一键收集所属 OceanBase 集群指定 trace_id 的 SQL 的执行详情信息，便于 分析SQL 执行慢时分析算子层面的原因。 如果是 obd 部署的集群，可直接通过 obd 侧诊…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*5ZXST55u540AAAAAAAAAAAAADiGDAQ/original) 敏捷诊断工具V 3.7.1

# SQL 详情收集

更新时间：2025-10-27 10:49:50

[编辑](https://github.com/oceanbase/odt-doc/edit/V3.7.1/zh-CN/400.gather/100.normal/103.gather_plan_monitor.md)  

本文适用于独立部署 obdiag 的场景，使用 obdiag gather plan_monitor 命令可以一键收集所属 OceanBase 集群指定 trace_id 的 SQL 的执行详情信息，便于 分析SQL 执行慢时分析算子层面的原因。

如果是 obd 部署的集群，可直接通过 obd 侧诊断命令组对所选集群进行信息收集，详细命令可参考 [诊断工具命令组](https://www.oceanbase.com/docs/community-obd-cn-10000000002049483)。

## 使用说明

#### 说明

该功能仅支持 OceanBase 数据库 V3.0 及以上版本。

```shell
obdiag gather plan_monitor [options]

```

选项说明如下：

| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| --trace_id | 是 | string | 默认为空 | OceanBase 数据库 V4.0.0 以下版本可从 `gv$sql_audit` 中查看 trace_id，OceanBase 数据库 V4.0.0 及以上版本可从 `gv$ob_sql_audit` 中查看 trace_id。 |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径。 |
| --env | 否 | string | 默认为空 | 要分析的 trace_id 涉及的 SQL 所在业务租户的连接串，主要用于获取 explain SQL 报告。   #### 说明    暂不支持配置的连接串中包含 `` \"'$!` `` 字符。 |
| -c | 否 | string | `~/.obdiag/config.yml` | 配置文件路径。 |
| --inner_config | 否 | string | 默认为空 | obdiag 自用的配置。 |
| --config | 否 | string | 默认为空 | 需被 obdiag 诊断的集群的配置，固定样式：`--config key1=value1 --config key2=value2`。   #### 说明    支持通过该选项配置的参数可参见 [obdiag 配置](https://www.oceanbase.com/docs/common-obdiag-cn-1000000004222672)。 |
| --config_password | 否 | string | 默认为空 | obdiag 使用加密的配置文件时，需通过该选项传入对应的密码。   #### 说明    详情可参见 [配置文件加密](https://www.oceanbase.com/docs/common-obdiag-cn-1000000004222708)。 |

## 使用示例

#### 说明

使用前获取 trace_id 的方法如下

从 gv$ob_sql_audit(observer 版本小于4.0时为 gv$sql_audit) 中获取或者通过SELECT last_trace_id();获取，以下两种方式任选一种

```sql
-- 方法一：通过sql_audit中获取
select query_sql,trace_id from oceanbase.GV$OB_SQL_AUDIT where query_sql like 'xxx%' order by REQUEST_TIME desc limit 5;

-- 方法二：通过当前session执行SELECT last_trace_id();获取
SELECT last_trace_id();

```

### 方式一：无配置文件使用（开箱即用）

```shell
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0 --env "{db_connect='-hxx -Pxx -uxx -pxx -Dxx'}" \
    --config db_host=xx.xx.xx.xx \
    --config db_port=xxxx \
    --config tenant_sys.user=root@sys \
    --config tenant_sys.password=***

```

输出如下：

```shell

Gather Summary:
+-----------+--------+-----------------------------------------------------------------------------+
| Status    | Time   | PackPath                                                                    |
+===========+========+=============================================================================+
| Completed | 6 s    | obdiag_gather_pack_20230118002457                                           |
+-----------+--------+-----------------------------------------------------------------------------+

```

### 方式二：有配置文件使用

#### 说明

需要确保已经在 obdiag 配置文件 `config.yml` 中配置好需要收集的集群 sys 连接信息。相关的详细配置介绍，参见 [obdiag 配置](https://www.oceanbase.com/docs/common-obdiag-cn-1000000004222672)。

```shell
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0 --env "{db_connect='-hxx -Pxx -uxx -pxx -Dxx'}"

```

## 结果解读

[obdiag 收集的 SQL Monitor Report 如何解读](https://open.oceanbase.com/blog/13108319520)

 上一篇 下一篇 ![有帮助](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) 咨询热线
