首批通过分布式安全可靠测评,为关键业务系统打造
SQL 详情收集
更新时间:2026-02-23 08:51:08
本文适用于独立部署 obdiag 的场景,使用 obdiag gather plan_monitor 命令可以一键收集所属 OceanBase 集群指定 trace_id 的 SQL 的执行详情信息,便于 分析SQL 执行慢时分析算子层面的原因。
如果是 obd 部署的集群,可直接通过 obd 侧诊断命令组对所选集群进行信息收集,详细命令可参考 诊断工具命令组。
使用说明
说明
该功能仅支持 OceanBase 数据库 V3.0 及以上版本。
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 报告。支持多次指定 key=value 格式,例如:--env host=x.x.x.x --env port=2881 --env user=root@test --env password=******** --env database=test。
说明暂不支持配置的连接信息中包含 |
| -c | 否 | string | ~/.obdiag/config.yml |
配置文件路径。 |
| --inner_config | 否 | string | 默认为空 | obdiag 自用的配置。 |
| --config | 否 | string | 默认为空 | 需被 obdiag 诊断的集群的配置,固定样式:--config key1=value1 --config key2=value2。
说明支持通过该选项配置的参数可参见 obdiag 配置。 |
| --config_password | 否 | string | 默认为空 | obdiag 使用加密的配置文件时,需通过该选项传入对应的密码。
说明详情可参见 配置文件加密。 |
使用示例
说明
使用前获取 trace_id 的方法如下
从 gv$ob_sql_audit(observer 版本小于4.0时为 gv$sql_audit) 中获取或者通过SELECT last_trace_id();获取,以下两种方式任选一种
-- 方法一:通过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();
方式一:无配置文件使用(开箱即用)
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0 \
--env host=xx.xx.xx.xx --env port=2881 --env user=root@test --env password=*** --env database=test \
--config db_host=xx.xx.xx.xx \
--config db_port=xxxx \
--config tenant_sys.user=root@sys \
--config tenant_sys.password=***
输出如下:
Gather Summary:
+-----------+--------+-----------------------------------------------------------------------------+
| Status | Time | PackPath |
+===========+========+=============================================================================+
| Completed | 6 s | obdiag_gather_pack_20230118002457 |
+-----------+--------+-----------------------------------------------------------------------------+
方式二:有配置文件使用
说明
需要确保已经在 obdiag 配置文件 config.yml 中配置好需要收集的集群 sys 连接信息。相关的详细配置介绍,参见 obdiag 配置。
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0 \
--env host=xx.xx.xx.xx --env port=2881 --env user=root@test --env password=*** --env database=test
结果解读
obdiag 收集的 SQL Monitor Report 如何解读
说明
自 obdiag V4.1.0 起,当 OceanBase 数据库为 V4.0.0 或之后版本时,报告中会包含统计信息直方图(Histogram),包括表级和分区级的直方图信息,便于分析执行计划与统计信息。直方图信息会显示在报告中的"统计信息直方图 (Histogram)"部分。