基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
如何定位 OBServer 错误日志
更新时间:2026-06-08 02:41
本文主要介绍定位 OBServer 错误日志的方法。
适用版本
OceanBase 数据库所有版本
通过 SHOW TRACE 命令定位
OceanBase 数据库提供了 SHOW TRACE 命令,用于在 SQL 中定位错误信息。对于可以复现的问题,如果 SHOW TRACE 功能正常可用,可以使用 SHOW TRACE 命令快速定位错误语句在 observer.log 中的 trace_id。
obclient> SHOW TRACE;
trace_id 通常以 Y 开头,可以使用 trace_id 在 observer.log 文件中定位日志中错误发生的时间、位置等信息。
[admin@hostname log]$ fgrep "<trace_id>" observer.log
通过 OBProxy 日志定位
对于无法复现的错误或者不适合通过 SHOW TRACE 命令定位的场景,可以通过 OBProxy 日志定位。
示例如下:
OceanBase(admin@test)>insert into t1 values('a', 'a');
ERROR 1366 (HY000): Incorrect integer value
首先通过连接串中的 IP 地址找到 OBProxy 所在的服务器,在 log 目录的 OBProxy 的日志中,会记录出错语句对应的错误码和错误信息。您可以通过错误码或错误信息来搜索错误语句。
通过错误信息搜索错误语句的示例如下:
[admin@hostname log]$ fgrep 'Incorrect integer value' obproxy_error.log
查询结果如下图所示。

通过报错的错误码和错误信息,可以确认具体的查询语句,OBProxy 的错误日志中还记录了服务器的 IP 地址和 trace_id。登录到报错的服务器,并通过 trace_id 在 observer.log 中进行定位。
直连 OBServer 定位
如果是通过直连的方式,则无法在 OBProxy 日志中定位到 trace_id。
通常情况下,客户端返回的错误码和错误信息是经过协议层映射,可能与 observer.log 中记录的错误信息不一致,因此直接通过在 observer.log 层 grep 相应的错误码和错误日志可能并不能得到需要搜索的错误信息。
如果是通过文本协议执行的 SQL 报错,最后一条 WARN 日志都会打印出执行出错的 SQL,因此可以通过 'obmp_query.*sql=' 关键字进行搜索。
[admin@hostname log]$ grep 'obmp_query.cpp.*sql=' observer.log.202103181*
返回信息如下图所示。

然后通过上图中的 trace_id 搜索 observer.log 日志。