obdiag全链路诊断问题

【测试环境】
【 obdiag 2.3.0】有两个问题要咨询
1.通过查询gv$ob_sql_audit发现不是每条SQL都有FLT_TRACE_ID?
2.拿最新的几条SQL对应的FLT_TRACE_ID,再通过obdiag执行,没结果

1 个赞
  1. 通过查询gv$ob_sql_audit发现不是每条SQL都有FLT_TRACE_ID?
    答:是的,不是所有的SQL都有FLT_TRACE_ID;

  2. 拿最新的几条SQL对应的FLT_TRACE_ID,再通过obdiag执行
    答:有了flt_trace_id,全链路的信息会不会打印到trace.log中,也是不一定的,取决于参数的设定,

-- 关闭 Trace
call dbms_monitor.ob_tenant_trace_disable();
-- 记录当前租户中的耗时信息,全部记录并全部打印。
call dbms_monitor.ob_tenant_trace_enable(1, 1, 'ALL');

默认情况下,打印到trace.log的概率是100万分之一,因为全链路诊断全打印的时候对性能是有一定影响的,所以一般情况下都不去修改成全部打印,只在追溯疑难杂症(慢SQL)的时候临时开启,问题排查结束,改回默认值。

具体可以参考文档:OceanBase分布式数据库-海量数据 笔笔算数

3 个赞

这个问题还有疑问吗

这样解释的话就没疑问了。只是觉得这个功能很鸡肋,真的会有用吗,又是百万分之一的概率,又是需要临时开启,如果线上真的偶发有慢SQL,这个功能基本是用不到的吧。

诉求已经收到,我们反馈到内核产品侧综合评估下看如何改进下。