---
title: OceanBase 数据库 V4.x 版本中执行 PURGE RECYCLEBIN 超时的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 V4.x 版本中执行 PURGE RECYCLEBIN 超时的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 V4.x 版本中执行 PURGE RECYCLEBIN 超时的原因和解决方法的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# OceanBase 数据库 V4.x 版本中执行 PURGE RECYCLEBIN 超时的原因和解决方法

更新时间：2026-05-21 09:16

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

## 问题现象

OceanBase 数据库 V4.3.2 BP1 版本中执行 `PURGE RECYCLEBIN` 超时，报错信息如下图所示。

![image01](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/database-object-management/DDL/20251022ob-dbv4x-purge-recyclebin-timeout01.png)

在 OceanBase 数据库 V4.x 版本中执行 `PURGE RECYCLEBIN` 报超时错误。

```shell
MySQL [test]> PURGE RECYCLEBIN;
ERROR 4012 (HY000): Timeout

```

## 问题原因

执行 `PURGE RECYCLEBIN` 时，通过如下命令查看日志。

```shell
tail -f observer.log|grep 'purge recycle objects'

```

可以看到会一次 purge 10 个对象，如下图（此图仅演示正常情况下日志，与此问题报错无直接关系）。

![image02](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/database-object-management/DDL/20251022ob-dbv4x-purge-recyclebin-timeout02.png)

在 OceanBase 数据库 V4.x 早期的版本中，一次 purge 10 个对象的超时时间固定是 `rpc_timeout`（默认 2s）的 10 倍，即 20s，也就是即使未达到 `_ob_ddl_timeout` 参数（默认 1000s）的设定的超时时间，如果耗时越过 20s 也有可能会超时。 OceanBase 数据库 V4.2.1/V4.2.5/V4.3.5 最新版本中， 会对一次 purge 10 个对象的超时时间进行估算，范围在 `10 * rpc_timeout` 和 `_ob_ddl_timeout` 之间，基本遇不到一次 purge 10 个对象超时的问题了。

## 问题的风险及影响

执行 `PURGE RECYCLEBIN` 超时。

## 适用版本

OceanBase 数据库 V4.x 版本。

## 解决方法

### 方法一：按对象逐个进行 PURGE

建议在业务低峰期按对象逐个进行 PURGE。 可以通过如下 SQL 批量生成指定数据库或 schema 的 PURGE 语句。

```shell
-- OceanBase 数据库 MySQL 租户
SELECT concat_ws(' ','PURGE',type ,object_name,';') stmt FROM oceanbase.dba_recyclebin WHERE owner = 'test' AND type IN ('TABLE');
-- OceanBase 数据库 Oracle 租户
SELECT 'PURGE '|| type ||' '||object_name||';' stmt FROM dba_recyclebin WHERE owner = user AND type IN ('TABLE');

```

如通过命令行批量生成 SQL 语句，可以指定 MySQL 或 OBClient 命令行参数 `-s -N` 以使输出只有 SQL。

### 方法二：超时后再次执行 PURGE 语句

当回收站的对象较多时，如 100000 以上个表时，由于 PURGE 语句内部是以 10 个对象为一批逐步进行的，虽然 `PURGE RECYCLEBIN` 执行时间达到 `_ob_ddl_timeout` 会超时，但回收站中的对象也在不断减少。 超时后可以再次执行如下 SQL：

```shell
PURGE RECYCLEBIN;

```

同时监测回收站中对象个数，直至 PURGE 完成。监测回收站中对象个数 SQL 如下：

```shell
-- OceanBase 数据库 MySQL 租户
SELECT count(1) FROM oceanbase.dba_recyclebin WHERE owner = 'test';

-- OceanBase 数据库 Oracle 租户
SELECT count(1) FROM dba_recyclebin WHERE owner = user;

```

### 方法三：临时调整 DDL 超时参数

当回收站的对象较多时，如 100000 以上个表时，`PURGE RECYCLEBIN` 执行时间达到 `_ob_ddl_timeout` 会超时。 如确定业务系统中无 DDL 执行或较少的 DDL 执行时，可以考虑临时调整 DDL 超时的集群参数 `_ob_ddl_timeout`，但需要注意此参数会影响正常的 DDL 超时，会存在 `PURGE RECYCLEBIN` 和正常 DDL 抢占 DDL 线程，所以建议优先使用本文档 **解决方法** 这节中的 **方法一：按对象逐个进行 PURGE** 或 **方法二：超时后再次执行 PURGE 语句**。

**OceanBase 数据库 sys 租户下通过命令行临时修改集群参数：**

```shell
ALTER SYSTEM SET _ob_ddl_timeout = '2000s';

```

**完成后调整回默认参数：**

```shell
ALTER SYSTEM SET _ob_ddl_timeout = '1000s';

```

#### 警告

修改 `_ob_ddl_timeout` 参数存在一定的风险，请勿自行操作。如果需要修改，请联系 OceanBase 技术支持团队。

### 方法四：临时调整 RPC 超时参数

当一次 purge 10 个对象超时，在 OceanBase 数据库专业技术支持团队的指导下可以临时调整 RPC 超时参数 `rpc_timeout`，但需要注意此参数为全局参数，会影响所有与此参数相关的 SQL 等的超时时间，所以强烈建议优先使用本文档中 **解决方法** 这一节中的 **方法一：按对象逐个进行 PURGE**。

**OceanBase 数据库 sys 租户下通过命令行或在 OCP 上临时修改集群参数：**

```shell
ALTER SYSTEM SET rpc_timeout = '3s';

```

```shell
ALTER SYSTEM SET rpc_timeout = '2s';

```

#### 警告

修改 `rpc_timeout` 参数存在一定的风险，请勿自行操作。如果需要修改，请联系 OceanBase 技术支持团队。

## 规避方式

按对象逐个进行 PURGE。

上一篇

[为什么 DROP TABLE 合并后还可以使用 OB_ADMIN 从 SSTable 中 DUMP 出数据?](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001407134)

下一篇

[OceanBase 数据库 V2.x 集群在进行删除字段操作时因合并未完成出现 -4694, check drop column failed 异常的原因及解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002968829) ![有帮助](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) 咨询热线
