基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 数据库 V2.2.77 版本查询 `gv$obrpc_outgoing` 和 `gv$obrpc_incoming` 报错 -4016 的原因和解决方法
更新时间:2026-05-25 09:11
问题现象
OceanBase 数据库 V2.2.77 版本中查询 gv$obrpc_outgoing 和 gv$obrpc_incoming 报错 -4016,日志告警 succ to inner get next row, but row is NULL。
关键日志含有 succ to inner get next row, but row is NULL 信息,完整日志如下。
[2024-12-04 09:01:02.426665] WARN [COMMON] get_next_row (ob_virtual_table_iterator.cpp:358) [2425][1616][xxxxx-xxxxx] [lt=9] [dc=
0] succ to inner get next row, but row is NULL(ret=-4016)
[2024-12-04 09:01:02.426685] WARN [SQL.ENG] inner_get_next_row (ob_table_scan.cpp:1491) [2425][1616][xxxxx-xxxxx] [lt=19] [dc=0]
fail to get next row from ObNewRowIterator(ret=-4016)
问题原因
由于 gv$obrpc_outgoing 和 gv$obrpc_incoming 实际是 __all_virtual_obrpc_stat 表的视图,而在 OceanBase 数据库 V2.2.77 版本中 __all_virtual_obrpc_stat 的实现存在问题,若存在某个租户在此视图中没有记录,会被拦截并报错 -4016。
问题的风险及影响
查询 gv$obrpc_outgoing 和 gv$obrpc_incoming 会报错 -4016。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.2.77 版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.1.2 BP6(oceanbase-3.1.2-20211230114204)及之后版本。
规避方式:
查询时过滤条件添加 tenant_id 等值条件,避免查询到没有记录的租户。