首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库集群执行 SQL 时出现 -4653 导致 SQL 执行被持续重试直到超时报错 -4012 的原因和解决方法
更新时间:2026-07-31 09:11
问题现象
在部分 OceanBase 数据库 V3.x、V4.x 版本的集群中,某些 DML 执行会出现非常缓慢的情况,缓慢的表现为 OceanBase 内部出现了远程执行,且远程执行一直出现 -4653 重试,相关日志如下,该问题一般发生在使用了 OceanBase 数控的二合一的 PS 协议时。
[2024-07-30 15:56:36.494637] WDIAG [SQL.OPT] optimize (ob_optimizer.cpp:77) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=2][errcode=-4653] best plan for remote sql is not local(ret=-4653, ctx_.get_phy_plan_type()=3)
[2024-07-30 15:56:36.494662] WDIAG [SQL] optimize_stmt (ob_sql.cpp:3569) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=23][errcode=-4653] Failed to optimize logical plan(ret=-4653)
[2024-07-30 15:56:36.494693] WDIAG [SQL] generate_plan (ob_sql.cpp:3204) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-4653] Failed to optimizer stmt(ret=-4653)
[2024-07-30 15:56:36.494710] WDIAG [SQL] generate_physical_plan (ob_sql.cpp:3011) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=-4653] failed to generate plan(ret=-4653)
[2024-07-30 15:56:36.494721] WDIAG [SQL] handle_physical_plan (ob_sql.cpp:4826) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4653] Failed to generate plan(ret=-4653, result.get_exec_context().need_disconnect()=false)
[2024-07-30 15:56:36.494739] WDIAG [SQL] handle_remote_query (ob_sql.cpp:2387) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=-4653] fail to handle physical plan(ret=-4653)
关键信息
关键日志。
[2024-07-30 15:56:36.494637] WDIAG [SQL.OPT] optimize (ob_optimizer.cpp:77) [3588377][T1022_L0_G0][T1022][xxxxx-xxxxx-xxxxx-xxxxx] [lt=2][errcode=-4653] best plan for remote sql is not local(ret=-4653, ctx_.get_phy_plan_type()=3)
问题原因
正常情况下,使用二合一的 PS 协议执行 SQL 时,如果涉及远程执行,第一次会将 SQL 直接发往远端执行,此时可能会出现 -4653,出现 -4653 之后,OceanBase 数据库会重试该 SQL 执行(第二次执行 SQL),本次重试会采用将执行计划发往远端执行的方式执行,出现此异常的原因在于第二次重试时 OceanBase 数据库内部的处理逻辑存在异常导致没有正常的触发合理的重试策略导致。
问题的风险及影响
导致 SQL 执行耗时变长或执行超时。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x 版本: OceanBase 数据库 V3.2.4 BP6(oceanbase-3.2.4.6-106000052023102710)版本、V3.2.4 BP7(oceanbase-3.2.4.7-107000012023113010)版本。
OceanBase 数据库 V4.x 版本: OceanBase 数据库 V4.2.1 BP4(oceanbase-4.2.1.4-104000062024022914)之前版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.2.4 BP8(oceanbase-3.2.4.8-108000142024041520)版本、V4.2.1 BP4(oceanbase-4.2.1.4-104000062024022914)及之后版本。
规避方式:
方法一:避免 SQL 使用远程执行。
方法二:尝试使用 HINT 来绑定正常的执行计划。