首批通过分布式安全可靠测评,为关键业务系统打造
快速入门:obdiag 全链路功能诊断
更新时间:2026-04-10 11:58:35
obdiag 是专为 OceanBase 设计的一款黑盒诊断工具。它的功能覆盖了对 OceanBase 日志、SQL 审计以及 OceanBase 进程堆栈等信息的扫描、收集和分析。无论您是在 OCP、obd 部署,还是按照文档手动部署,obdiag 都能以一键执行的方式迅速完成诊断信息的收集和分析。
本文档将引导您如何使用 obdiag 快速对 OceanBase 数据库进行全链路追踪。
安装和部署 obdiag
下载 obdiag,确保您下载的版本为 v.1.5.0 及以上。
请参考官方文档 敏捷诊断工具 obdiag 完成 obdiag 的安装、部署和配置。
操作步骤
步骤 1(可选):重设租户 Trace
如果您希望在进行全面诊断时打印全部结果,可以执行重设租户 Trace操作。
在连接到 OBServer 后,执行以下 SQL 命令:
-- 关闭 Trace
call dbms_monitor.ob_tenant_trace_disable();
-- 记录当前租户中的耗时信息,全部记录并全部打印。
call dbms_monitor.ob_tenant_trace_enable(1, 1, 'ALL');
步骤 2:查询 SQL 语句进行测试
这里以一个 SQL 查询语句为例,演示如何进行全链路功能诊断。
select * from tx where c1=1 and c1=2;
-- 在 SQL Audit 中,通过 `query_sql` 查找疑似慢 SQL 的 `flt_trace_id`
SELECT query_sql, flt_trace_id FROM oceanbase.gv$ob_sql_audit WHERE query_sql LIKE 'select * from tx where c1=1 and c1=%';
+--------------------------------------+--------------------------------------+
| query_sql | flt_trace_id |
+--------------------------------------+--------------------------------------+
| select * from tx where c1=1 and c1=2 | 00060e1a-dead-7cbd-5d74-6d64084eccfa |
+--------------------------------------+--------------------------------------+
1 row in set (0.206 sec)
步骤 3:执行全链路追踪命令
退出 OBServer,并执行以下命令进行全链路追踪:
-- 使用步骤 2 中得到的 `flt_trace_id` 和配置好的环境执行全链路追踪命令:
$ obdiag analyze flt_trace --flt_trace_id 00060e1a-dead-7cbd-5d74-6d64084eccfa
返回结果如下:
2024-01-04 16:54:21,217 [INFO] Use analyze_flt_result_20240104165421 as pack dir.
2024-01-04 16:54:21,218 [INFO] Sending Collect Shell Command to node 172.xx.xxx.xxx ...
2024-01-04 16:54:21,227 [INFO] Connected (version 2.0, client OpenSSH_7.4)
2024-01-04 16:54:21,300 [INFO] Authentication (publickey) failed.
2024-01-04 16:54:21,317 [INFO] Authentication (password) successful!
2024-01-04 16:54:21,317 [INFO] [remote host 172.xx.xxx.xxx] execute cmd = [mkdir -p /tmp/trace_merged_cache]
2024-01-04 16:54:21,365 [INFO] [remote host 172.xx.xxx.xxx] execute cmd = [grep '00060e1a-dead-7cbd-5d74-6d64084eccfa' /home/admin/oceanbase/log/*trace.log* > /tmp/trace_merged_cache/00060e1a-dead-7cbd-5d74-6d64084eccfa ]
2024-01-04 16:54:21,412 [INFO] Please wait a moment, download file [/tmp/trace_merged_cache/00060e1a-dead-7cbd-5d74-6d64084eccfa] from server 172.xx.xxx.xxx to [analyze_flt_result_20240104165421/172.xx.xxx.xxx/OBSERVER-00060e1a-dead-7cbd-5d74-6d64084eccfa]
2024-01-04 16:54:21,459 [INFO] [chan 2] Opened sftp connection (server version 3)
Download 172.xx.xxx.xxx:/tmp/trace_merged_cache/00060e1a-dead-7cbd-5d74-6d64084eccfa
Downloading [====================] 100.0% [9.18 KB ]
2024-01-04 16:54:21,463 [INFO] [chan 2] sftp session closed.
2024-01-04 16:54:21,463 [INFO] [remote host 172.xx.xxx.xxx] execute cmd = [rm -rf /tmp/trace_merged_cache/OBSERVER-00060e1a-dead-7cbd-5d74-6d64084eccfa]
2024-01-04 16:54:21,469 [INFO] [chan 2] sftp session closed.
2024-01-04 16:54:21,475 [INFO] parse file: analyze_flt_result_20240104165421/172.xx.xxx.xxx/OBSERVER-00060e1a-dead-7cbd-5d74-6d64084eccfa
2024-01-04 16:54:21,476 [INFO] file:analyze_flt_result_20240104165421/172.xx.xxx.xxx/OBSERVER-00060e1a-dead-7cbd-5d74-6d64084eccfa trace:00060e1a-dead-7cbd-5d74-6d64084eccfa total:21
root node id: 00060e1a-dead-7cbd-0d98-21b2933fca47
Top time-consuming leaf span:
+----+----------------+--------------+---------------------------+
| ID | Leaf Span Name | Elapsed Time | HOSTS |
+----+----------------+--------------+---------------------------+
| 10 | optimize | 531 μs | OBSERVER (
172.xx.xxx.xxx) |
| 8 | resolve | 289 μs | OBSERVER (172.xx.xxx.xxx) |
| 9 | rewrite | 460 μs | OBSERVER (172.xx.xxx.xxx) |
| 11 | code_generate | 126 μs
| OBSERVER (172.xx.xxx.xxx) |
| 12 | pc_add_plan | 59 μs | OBSERVER (172.xx.xxx.xxx) |
+----+----------------+--------------+---------------------------+
Tags & Logs:
-------------------------------------
10 - optimize Elapsed: 531 μs
OBSERVER (172.xx.xxx.xxx)
8 - resolve Elapsed: 289 μs
OBSERVER (172.xx.xxx.xxx)
9 - rewrite Elapsed: 460 μs
OBSERVER (172.xx.xxx.xxx)
11 - code_generate Elapsed: 126 μs
OBSERVER (172.xx.xxx.xxx)
12 - pc_add_plan Elapsed: 59 μs
OBSERVER (172.xx.xxx.xxx)
Details:
+---+------------------------------+-------------+--------------------------+
| ID| Span Name | Elapsed Time| HOSTS |
+---+------------------------------+-------------+--------------------------+
| 1 | TRACE | - | |
| 2 | └─com_query_process | 2.040 ms | OBSERVER (172.xx.xxx.xxx)|
| 3 | └─mpquery_single_stmt | 2.026 ms | |
| 4 | ├─sql_compile | 1.787 ms | |
| 5 | │ ├─pc_get_plan | 5 μs | OBSERVER (172.xx.xxx.xxx)|
| 6 | │ └─hard_parse | 1.738 ms | |
| 7 | │ ├─parse | 57 μs | OBSERVER (172.xx.xxx.xxx)|
| 8 | │ ├─resolve | 289 μs | OBSERVER (172.xx.xxx.xxx)|
| 9 | │ ├─rewrite | 460 μs | OBSERVER (172.xx.xxx.xxx)|
| 10| │ ├─optimize | 531 μs | OBSERVER (172.xx.xxx.xxx)|
| 11| │ ├─code_generate | 126 μs | OBSERVER (172.xx.xxx.xxx)|
| 12| │ └─pc_add_plan | 59 μs | OBSERVER (172.xx.xxx.xxx)|
| 13| └─sql_execute | 179 μs | |
| 14| ├─open | 21 μs | OBSERVER (172.xx.xxx.xxx)|
| 15| ├─response_result | 80 μs | |
| 16| │ └─do_local_das_task | 40 μs | OBSERVER (172.xx.xxx.xxx)|
| 17| └─close | 42 μs | |
| 18| ├─close_das_task | 5 μs | OBSERVER (172.xx.xxx.xxx)|
| 19| └─end_transaction | 2 μs | OBSERVER (172.xx.xxx.xxx)|
+---+------------------------------+-------------+--------------------------+
Tags & Logs:
-------------------------------------
1 -
2 - com_query_process Elapsed: 2.040 ms
OBSERVER (172.xx.xxx.xxx)
tags: [{'sess_id': 32 ...
3 - mpquery_single_stmt Elapsed: 2.026 ms
4 - sql_compile Elapsed: 1.787 ms
tags: [{'sql_text': 'select * from tx where c1=1 and c1=2 ...
5 - pc_get_plan Elapsed: 5 μs
OBSERVER (172.xx.xxx.xxx)
6 - hard_parse Elapsed: 1.738 ms
7 - parse Elapsed: 57 μs
OBSERVER (172.xx.xxx.xxx)
Result too large, wait a moment ...
For more details, please run cmd ' cat analyze_flt_result_20240104165421/00060e1a-dead-7cbd-5d74-6d64084eccfa.txt '
If you want to view detailed obdiag logs, please run:' obdiag display-trace --trace_id 4335f2a3-6d17-3904-8ff9-d5b25aeffd21 '
步骤 4:查看全链路追踪详情
$ cat analyze_pack_20231008171201/result_details.txt
全链路追踪结果将包括 TOP 5 耗时的 Leaf Span,以及各个 Span 的详细信息和标签。