基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
SQL 执行报错而不能计入 SQL_AUDIT 的情况说明
更新时间:2026-08-13 07:41
通常,执行成功的 SQL 都会计入 SQL_AUDIT 中,执行报错的 SQL 在大多数情况下也会计入 SQL_AUDIT 中,可以通过 SQL_AUDIT 视图中的 RET_CODE 字段查看执行报错的 SQL 对应的错误码。只有以下情况的 SQL 不会计入 SQL_AUDIT 中:
- 关闭了 SQL_AUDIT 功能,即集群配置项
enable_sql_audit设置为False,或会话变量ob_enable_sql_audit设置为False。 - SQL 请求在进入 SQL 引擎前发生报错,例如 Schema 刷新失败、时区信息更新失败等。
- SQL 执行失败触发重试时,重试期间的执行记录不写入 SQL_AUDIT,仅以最后一次执行结果为准。
在 OceanBase 数据库中,SQL 请求的执行流程如图所示。

如果 SQL 在进入 Executor 阶段前发生报错,则该 SQL 的执行信息依然计入 SQL_AUDIT 中,比如:
- SQL 中有语法错误,Parser 阶段报错。
- SQL 中的表或者列不存在,Resolver 阶段报错。
如果 SQL 在 Executor 阶段发生报错,则该 SQL 的执行信息会被统计并写入 SQL_AUDIT 中,比如:
- Insert 时发生主键冲突错误。
- SQL 执行时发生超时。
以上执行报错的 SQL,均可以在 SQL_AUDIT 视图中通过 RET_CODE 字段查看对应的错误码。
适用版本
OceanBase 数据库所有版本