首批通过分布式安全可靠测评,为关键业务系统打造
GV$OB_SQL_AUDIT 查到部分 SQL 为空且显示耗时长
更新时间:2025-09-04 11:41
问题描述
如图,GV$OB_SQL_AUDIT 视图查到部分 SQL 为空且显示耗时长

适用版本
OceanBase 数据库 V4.x 版本。
问题原因
情况 1:参数
_enable_sql_audit_query_sql未设置为 True,可以在 sys 租户下直接查看看是否存在 query_sql,如果存在,则为该参数未打开导致。同时也可以在 sys 租户下通过查询参数_enable_sql_audit_query_sql的值进行确认,具体语句如下:obclient> select * from GV$OB_PARAMETERS where name like '%_enable_sql_audit_query_sql%' where TENANT_ID=xxx;情况 2:可能该 SQL 为整体 SQL 的一部分,可以根据 trace_id 查询,是否查询结果存在多行并且至少有一行 query_sql 是不为空的,如果是该现象,则符合预期。
解决方法
如果是上述情况 1,则在业务租户下通过如下 SQL 开启隐藏参数:
obclient> ALTER SYSTEM SET _enable_sql_audit_query_sql = true;如果为上述情况 2,则无需处理,符合预期。一个 SQL 在执行时,可能在 SQL_AUDIT 中存在多条记录,有些记录的 query_sql 可能为空,因为这涉及到分布式执行、px 调度等等都有可能,然后这些子计划的执行的 query_sql 就不会展示出来,因为可能经过了改写等等之类的。