---
title: 3.x 版本 Schema 的延迟删除-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于3.x 版本 Schema 的延迟删除相关的常见问题和使用技巧，帮助您快速解决3.x 版本 Schema 的延迟删除的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# 3.x 版本 Schema 的延迟删除

更新时间：2026-08-27 06:26

适用版本： V3.1.x、V3.2.x、V3.3.x 内容类型：TechNote  

## 总结说明

在 OceanBase 数据库 3.x 版本中，为了避免在备份、归档或备库同步过程中，因 Schema 被删除导致分区被垃圾回收（GC）而任务失败，引入了 Schema 延迟删除机制。当开启备份、归档或备库功能时，Schema 不会被立即删除，而是根据任务进度，由后台巡检任务统一触发删除操作。

## 详细说明

### 开关

Schema 延迟删除功能并非在所有 3.x 集群中默认开启。只有当集群开启了备份、归档或备库功能中的至少一项时，系统才会默认启用 Schema 延迟删除，以确保这些流程能够正常执行。

该功能没有独立的配置项开关，其启停完全由上述功能的状态控制。

您可以通过以下方式判断当前集群是否开启了相关功能，从而间接判断延迟删除是否生效：

- **备份状态**：查询系统表 `__all_virtual_backup_info`，指定 `tenant_id` 为 `sys` 或用户租户 ID。

```sql
-- 备份状态，`STOP` 以外通常表示正在进行备份
SELECT name, value
FROM oceanbase.__all_virtual_backup_info
WHERE tenant_id = xxx AND name = 'backup_status';

```

- **归档状态**：查询系统视图 `CDB_OB_BACKUP_ARCHIVELOG`，指定 `tenant_id` 为 `sys` 或用户租户 ID。

```sql
-- 归档状态，`STOP` 以外通常表示正在进行归档
SELECT TENANT_ID, STATUS
FROM oceanbase.CDB_OB_BACKUP_ARCHIVELOG
WHERE tenant_id = xxx;

```

- **备库状态**：查询系统视图 `V$OB_CLUSTER` 和 `V$OB_STANDBY_STATUS`，判断是否存在备库。

```sql
-- 查看当前集群状态
SELECT * FROM oceanbase.V$OB_CLUSTER;
-- 查询结果为空表示没有备库
SELECT * FROM oceanbase.V$OB_STANDBY_STATUS;

```

### 总体流程

Schema 延迟删除主要分为以下三个步骤：

1. **标记为待删除**：当执行 `DROP` 操作时，系统不会立即删除 Schema，而是将其表名修改为 `DELAY_DELETE` 形式以示区别。此时，在 `__all_table_history` 表中的 `is_deleted` 列仍为 `0`。
 2. **标记为可删除**：一个后台任务会定期调度，检查该 Schema 信息是否可以被安全删除。如果满足删除条件，则将该 Schema 在历史表中的 `is_deleted` 列标记为 `1`。
 3. **物理删除**：`schema history recycler` 后台线程根据 `is_deleted = 1` 的标记，决定是否将这些行从历史表中真正物理删除。

流程示意图如下：

![](http://oat-release.oss-cn-hangzhou-zmf.aliyuncs.com/test/F4906105921767606213539.png?Expires=2082966213&OSSAccessKeyId=LTAI5tMvADtTFTJpYoiGRbyM&Signature=PFd0iDT%2FZob%2B0os%2Bj%2FJ1%2B%2FYCwQg%3D)

### 详细细节

本节主要阐述上述流程中的第二步，即后台任务如何判断并标记 Schema 为可删除状态。

#### 调度机制

- 该后台任务的默认调度周期为 10 分钟。
 - 每轮调度最多标记 100 个 Schema 信息为 `deleted`。
 - 如果一轮处理完成后，发现仍有超过 100 个待处理任务，系统会将下一轮的调度周期缩短至 10 秒，以加速处理。
 - 当某一轮处理的任务数少于 100 个时，调度周期会恢复为默认的 10 分钟。

#### 标记为可删除（is_deleted = 1）的条件

一个 Schema 被标记为可删除，需要同时满足以下条件：

- **状态为已删除**：该 Schema 必须是已删除状态。这对应总体流程的第一步，系统会设置其 `drop_schema_version > 0`。
 - **版本足够旧**：该 Schema 的 `drop_schema_version` **小于等于** 后台计算出的 `recycle_schema_version`。这表示备份、归档等任务已不再需要此旧版本的 Schema。
 - **分区已处理**：对于有分区的表，还需要满足“待垃圾回收的分区都已经处理完毕”的条件（通过检查 `__all_tenant_gc_partition_info` 等系统表来确认）。

### Schema 延迟删除的影响

- **空间占用**：会导致已删除的 Schema 信息在系统中残留一段时间，占用额外的存储空间。
 - **潜在报错**：在某些情况下，对已删除但尚未被清理的 Schema 进行查询或操作，可能会引发报错（具体案例可参考相关工单）。

## 适用版本

OceanBase 数据库 3.x 版本。

## 拓展

**分区延迟删除** 功能通过配置项 `gc_wait_archive` 控制。该功能与本文所述的 Schema 延迟删除没有直接关联，但同样是为了保障备份和归档任务的完整性而设计。其主要目的是在确保数据安全的前提下，释放内存、磁盘空间并减少分区数量。具体信息可参考相关文档和配置项说明。

上一篇

[网卡 speed 值为空导致备份报错 -4006 throttle is not initialized](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003982718)

下一篇

[归档落后对 OceanBase 数据库的影响](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000208044) ![有帮助](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) 咨询热线
