---
title: OceanBase 数据库集群执行 SQL 时出现 -4653 导致 SQL 执行被持续重试直到超时报错 -4012 的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库集群执行 SQL 时出现 -4653 导致 SQL 执行被持续重试直到超时报错 -4012 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库集群执行 SQL 时出现 -4653 导致 SQL 执行被持续重试直到超时报错 -4012 的原因和解决方法的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库集群执行 SQL 时出现 -4653 导致 SQL 执行被持续重试直到超时报错 -4012 的原因和解决方法

更新时间：2026-07-31 09:11

适用版本： V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题现象

在部分 OceanBase 数据库 V3.x、V4.x 版本的集群中，某些 DML 执行会出现非常缓慢的情况，缓慢的表现为 OceanBase 内部出现了远程执行，且远程执行一直出现 -4653 重试，相关日志如下，该问题一般发生在使用了 OceanBase 数控的二合一的 PS 协议时。

```shell
[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)

```

## 关键信息

关键日志。

```shell
[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 来绑定正常的执行计划。

Previous

[SQL、PL/SQL 代码中关于保留字和关键字使用的最佳实践](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001853782)

Next

[OceanBase 数据库中执行 SQL 语句 select dbms_utility.port_string() from dual；卡住的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002398331) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
