---
title: "手动清理指定的备份或归档数据 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 手动清理指定的备份或归档数据 因业务需要，期望清理一些特定的备份或归档时，可以参考本文档手动清理指定的数据备份集或日志归档 Piece。 使用限制 手动清理指定的备份或归档数据时，要求被操作的用户租户未配置自动清理策略。如果配置了自动清理则无法进行手动清理。 对于仅开启了日志归档，未配置数据备份路径的场景，不允许通过…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# 手动清理指定的备份或归档数据

更新时间：2026-06-18 14:03:05

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/600.manage/600.backup-and-recovery/500.clear-backup-data/100.manual-backup-cleanup/200.cleaning-up-specified-backup-data.md)  

因业务需要，期望清理一些特定的备份或归档时，可以参考本文档手动清理指定的数据备份集或日志归档 Piece。

## 使用限制

- 手动清理指定的备份或归档数据时，要求被操作的用户租户未配置自动清理策略。如果配置了自动清理则无法进行手动清理。
 - 对于仅开启了日志归档，未配置数据备份路径的场景，不允许通过手动方式清理指定的日志归档 Piece，用户只能通过将自动清理策略配置为 `log_only` 的方式来实现日志归档 Piece 的清理。

  配置自动清理策略的详细操作，参见 [自动清理过期备份](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682907)。

## 清理指定的数据备份集

### 注意事项

清理指定的数据备份集时，需要注意以下事项：

- 不能破坏数据备份之间的依赖关系。如果某个数据备份被关联的增量备份所依赖，则被依赖的数据备份只能在所有依赖它的增量备份被删除后，才能被删除。
 - 如果需要同时指定多个 `BACKUP_SET_ID` 进行清理，则要求所有 `BACKUP_SET_ID` 均在同一个备份路径下。不支持在同一条命令中清理多个路径下的数据备份。
 - 对于当前正在使用的备份路径，需要至少保留一份最新的且能够用于恢复的全量数据备份。即，保留一份可用于恢复的全量备份后，才可以删除在该备份集之前的其它备份集。
 - 如果待删除的数据备份集不在当前正在使用的备份路径中，需要保证 OceanBase 数据库有对应备份路径的访问权限。

### 系统租户清理指定用户租户的指定数据备份集

1. 使用 `root` 用户登录集群的 `sys` 租户。

   连接示例如下，连接数据库时请以实际环境为准。

   ```shell
   obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A

   ```
 2. 查看租户信息，获取租户的 `TENANT_ID`。

   本文档以租户为 `mysql001` 为例，查询示例如下：

   ```shell
   obclient(root@sys)[(none)]> SELECT TENANT_ID, TENANT_NAME, TENANT_TYPE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mysql001';

   ```

   查询结果如下：

   ```shell
   +-----------+-------------+-------------+
   | TENANT_ID | TENANT_NAME | TENANT_TYPE |
   +-----------+-------------+-------------+
   |      1002 | mysql001    | USER        |
   +-----------+-------------+-------------+
   1 row in set

   ```

   根据查询结果，该租户的 `TENANT_ID` 为 1002。
 3. 获取待清理的备份集的 `backup_set_id`。

   ```shell
   obclient(root@sys)[(none)]> SELECT TENANT_ID, BACKUP_SET_ID, BACKUP_TYPE, PREV_FULL_BACKUP_SET_ID, PREV_INC_BACKUP_SET_ID, STATUS, FILE_STATUS, START_REPLAY_SCN, START_REPLAY_SCN_DISPLAY, MIN_RESTORE_SCN, MIN_RESTORE_SCN_DISPLAY, PATH FROM oceanbase.CDB_OB_BACKUP_SET_FILES WHERE TENANT_ID = 1002;

   ```

   查询结果如下：

   ```shell
   +-----------+---------------+-------------+-------------------------+------------------------+---------+-------------+---------------------+----------------------------+---------------------+-------------------------------+-------------------------------+
   | TENANT_ID | BACKUP_SET_ID | BACKUP_TYPE | PREV_FULL_BACKUP_SET_ID | PREV_INC_BACKUP_SET_ID | STATUS  | FILE_STATUS | START_REPLAY_SCN    | START_REPLAY_SCN_DISPLAY   | MIN_RESTORE_SCN     | MIN_RESTORE_SCN_DISPLAY       | PATH                          |
   +-----------+---------------+-------------+-------------------------+------------------------+---------+-------------+---------------------+----------------------------+---------------------+-------------------------------+-------------------------------+
   |      1002 |             1 | FULL        |                       0 |                      0 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757326563751672000 | 2025-09-08 18:16:03.751672000 |  file:///data/nfs/backup/data |
   |      1002 |             2 | INC         |                       1 |                      1 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757326695246191000 | 2025-09-08 18:18:15.246191000 |  file:///data/nfs/backup/data |
   |      1002 |             3 | FULL        |                       0 |                      0 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757326826319880000 | 2025-09-08 18:20:26.319880000 |  file:///data/nfs/backup/data |
   |      1002 |             4 | FULL        |                       0 |                      0 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757326961311034000 | 2025-09-08 18:22:41.311034000 |  file:///data/nfs/backup/data |
   |      1002 |             5 | FULL        |                       0 |                      0 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757327092469081000 | 2025-09-08 18:24:52.469081000 |  file:///data/nfs/backup/data |
   |      1002 |             6 | FULL        |                       0 |                      0 | SUCCESS | AVAILABLE   | 1757326402739265000 | 2025-09-08 18:13:22.739265 | 1757327219591390000 | 2025-09-08 18:26:59.591390000 |  file:///data/nfs/backup/data |
   +-----------+---------------+-------------+-------------------------+------------------------+---------+-------------+---------------------+----------------------------+---------------------+-------------------------------+-------------------------------+
   6 rows in set

   ```

   根据查询结果可知，租户 ID 为 `1002` 的租户下，有 5 份全量备份和 1 份增量备份均在同一个备份路径下。其中：

      - `BACKUP_SET_ID` 为 1、3、4、5、6 的备份为全量备份。
      - `BACKUP_SET_ID` 为 2 的备份为增量备份，且其依赖 `BACKUP_SET_ID` 为 1 的全量备份。

   按照清理要求：

      - 在 `BACKUP_SET_ID` 为 2 的增量备份未删除前，不能删除 `BACKUP_SET_ID` 为 1 的全量备份。
      - 如果待删除的备份集所在的备份路径为租户当前正在使用的备份路径，则需要保留一份最新的并且能够用于恢复的全量备份数据，其之前的数据备份可以删除。

       一份备份是否“可用于恢复”，关键在于其所需的日志归档是否完整。例如，在本示例中，可以通过以下方式判断全量备份 `BACKUP_SET_ID` 6 是否能够用于恢复：

            - 如果 `BACKUP_SET_ID` 6 本身包含了补偿日志（发起数据备份时指定了 `PLUS ARCHIVELOG` 参数），则该备份集可直接用于恢复，在删除备份集时需要保留 `BACKUP_SET_ID` 6，可以删除该备份之前的其他备份集。
            - 如果 `BACKUP_SET_ID` 6 未包含补偿日志（发起数据备份时未指定 `PLUS ARCHIVELOG` 参数），则需要检查当前归档路径下的日志归档 Piece，确保存在从该备份集的 `START_REPLAY_SCN` 到 `MIN_RESTORE_SCN` 的完整且连续的日志归档 Piece。如果不存在满足条件的日志归档 Piece，则表示 `BACKUP_SET_ID` 6 不能用于恢复，需要按照相同的方法再确认上一个全量备份 `BACKUP_SET_ID` 5 是否能够用于恢复，以此类推。
 4. 执行以下命令，删除指定的数据备份。

   语句如下：

   ```sql
   ALTER SYSTEM DELETE BACKUPSET backup_set_id[,backup_set_id,...] TENANT [=] tenant_name;

   ```

   其中：

      - `backup_set_id`：指定待删除的备份集的 ID，单条命令中支持同时指定多个数据备份集。同时指定多个 `backup_set_id` 进行清理时，要求所有 `backup_set_id` 均在同一个备份路径下。不支持在同一条命令中清理多个路径下的数据备份。
      - `tenant_name`：指定待删除备份集的租户。

   示例如下：

      - 删除租户 `mysql001` 的 `backup_set_id` 为 3 的数据备份集。

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM DELETE BACKUPSET 3 TENANT = mysql001;

       ```
      - 同时删除租户 `mysql001` 的 `backup_set_id` 为 1、2、4 的 3 个数据备份集。

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM DELETE BACKUPSET 1,2,4 TENANT = mysql001;

       ```

### 用户租户清理本租户指定的数据备份集

1. 用户租户的租户管理员登录到数据库。

   #### 说明

   MySQL 租户的管理员用户为 `root` 用户，Oracle 租户的管理员用户为 `SYS` 用户。

   ```shell
   obclient -h10.xx.xx.xx -P2883 -uroot@mysql001#obdemo -p***** -A

   ```
 2. 获取待清理的备份集的 `backup_set_id`。

       MySQL 模式   Oracle 模式

   MySQL 模式下的查询示例如下：

   ```shell
   obclient(root@mysql001)[(none)]> SELECT BACKUP_SET_ID, BACKUP_TYPE, PREV_FULL_BACKUP_SET_ID, PREV_INC_BACKUP_SET_ID, STATUS, FILE_STATUS, START_REPLAY_SCN, START_REPLAY_SCN_DISPLAY, MIN_RESTORE_SCN, MIN_RESTORE_SCN_DISPLAY, PATH FROM oceanbase.DBA_OB_BACKUP_SET_FILES;

   ```

   Oracle 模式下的查询示例如下：

   ```shell
   obclient(SYS@oracle001)[SYS]> SELECT BACKUP_SET_ID, BACKUP_TYPE, PREV_FULL_BACKUP_SET_ID, PREV_INC_BACKUP_SET_ID, STATUS, FILE_STATUS, START_REPLAY_SCN, START_REPLAY_SCN_DISPLAY, MIN_RESTORE_SCN, MIN_RESTORE_SCN_DISPLAY, PATH FROM SYS.DBA_OB_BACKUP_SET_FILES;

   ```
 3. 执行以下命令，删除指定的数据备份。

   语句如下：

   ```sql
   ALTER SYSTEM DELETE BACKUPSET backup_set_id[,backup_set_id,...];

   ```

   其中：

      - `backup_set_id`：指定待删除的备份集的 ID，单条命令中支持同时指定多个数据备份集，不同 `backup_set_id` 之间使用英文逗号间隔。同时指定多个 `backup_set_id` 进行清理时，要求所有 `backup_set_id` 均在同一个备份路径下。不支持在同一条命令中清理多个路径下的数据备份。
      - `tenant_name`：指定待删除备份集的租户。

   示例如下：

      - 删除本租户 `backup_set_id` 为 3 的数据备份集。

       ```shell
       obclient> ALTER SYSTEM DELETE BACKUPSET 3;

       ```
      - 同时删除本租户 `backup_set_id` 为 1、2、4 的 3 个数据备份集。

       ```shell
       obclient> ALTER SYSTEM DELETE BACKUPSET 1,2,4;

       ```

## 清理指定的日志归档 Piece

### 注意事项

清理指定的日志归档 Piece 时，需要注意以下事项：

- 需要按照顺序清理日志归档 Piece。
 - 清理当前归档路径中的 Piece 时，要求被清理的 Piece 不被当前数据备份路径中的任何数据备份所依赖。

  判断待清理的 Piece 是否被某个数据备份集所依赖的方法如下：

     1. 在租户当前的备份路径中，找到一个时间比较长远的数据备份集。
     2. 查看该数据备份集的 `START_REPLAY_SCN`。

            - 系统租户

             ```shell
             obclient(root@sys)[(none)]> SELECT * FROM oceanbase.CDB_OB_BACKUP_SET_FILES WHERE TENANT_ID = tenant_id AND BACKUP_SET_ID = set_id;

             ```
            - 用户租户

             ```shell
             obclient(root@mysql001)[(none)]> SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_FILES WHERE BACKUP_SET_ID = set_id;

             ```

             ```shell
             obclient(SYSt@oracl001)[SYS]> SELECT * FROM SYS.DBA_OB_BACKUP_SET_FILES WHERE BACKUP_SET_ID = set_id;

             ```

       详细操作及说明，参见 [查看数据备份结果](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682380)。
     3. 查看待清理的 Piece 的 `END_SCN`。

            - 系统租户

             ```shell
             obclient(root@sys)[(none)]> SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG_PIECE_FILES WHERE TENANT_ID = tenant_id AND PIECE_ID = piece_id;

             ```shell
             obclient(root@mysql001)[(none)]> SELECT * FROM oceanbase.DBA_OB_ARCHIVELOG_PIECE_FILES WHERE PIECE_ID = piece_id;

             ```

             ```shell
             obclient(SYSt@oracl001)[SYS]> SELECT * FROM SYS.DBA_OB_ARCHIVELOG_PIECE_FILES WHERE PIECE_ID = piece_id;

             ```

       详细操作及说明，可参见 [查看 Piece 信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682410)。
     4. 将获取到的信息进行对比，如果待清理的 Piece 的 `END_SCN` 大于或等于当前备份路径中某个数据备份的 `START_REPLAY_SCN`，则表示该 Piece 被此数据备份集所依赖。
 - 如果需要同时指定多个 `PIECE_ID` 进行清理，则要求所有 `PIECE_ID` 均在同一个归档路径下。不支持在同一条命令中清理多个路径下的日志归档 Piece。

### 系统租户清理指定租户的指定日志归档 Piece

1. 使用 `root` 用户登录集群的 `sys` 租户。

   ```

   查询结果如下：

   ```

   根据查询结果，该租户的 `TENANT_ID` 为 1002。
 3. 获取待清理的日志归档 Piece 的 `piece_id`。

   ```shell
   obclient(root@sys)[(none)]> SELECT TENANT_ID, ROUND_ID, PIECE_ID, STATUS, FILE_STATUS, START_SCN, START_SCN_DISPLAY, END_SCN, END_SCN_DISPLAY, PATH FROM oceanbase.CDB_OB_ARCHIVELOG_PIECE_FILES WHERE TENANT_ID = 1002;

   ```

   查询结果如下：

   ```shell
   +-----------+----------+----------+--------+-------------+---------------------+----------------------------+---------------------+----------------------------+----------------------------------+
   | TENANT_ID | ROUND_ID | PIECE_ID | STATUS | FILE_STATUS | START_SCN           | START_SCN_DISPLAY          | END_SCN             | END_SCN_DISPLAY            | PATH                             |
   +-----------+----------+----------+--------+-------------+---------------------+----------------------------+---------------------+----------------------------+----------------------------------+
   |      1002 |        1 |        1 | FROZEN | AVAILABLE   | 1757333158537074000 | 2025-09-08 20:05:58.537074 | 1757333218537074000 | 2025-09-08 20:06:58.537074 | file:///data/nfs/backup/archive1 |
   |      1002 |        1 |        2 | FROZEN | AVAILABLE   | 1757333218537074000 | 2025-09-08 20:06:58.537074 | 1757333278537074000 | 2025-09-08 20:07:58.537074 | file:///data/nfs/backup/archive1 |
   |      1002 |        1 |        3 | FROZEN | AVAILABLE   | 1757333278537074000 | 2025-09-08 20:07:58.537074 | 1757333338537074000 | 2025-09-08 20:08:58.537074 | file:///data/nfs/backup/archive1 |
   |      1002 |        1 |        4 | ACTIVE | AVAILABLE   | 1757333338537074000 | 2025-09-08 20:08:58.537074 | 1757333398537074000 | 2025-09-08 20:09:58.537074 | file:///data/nfs/backup/archive1 |
   |      1002 |        2 |        5 | FROZEN | AVAILABLE   | 1757333589335423000 | 2025-09-08 20:13:09.335423 | 1757333649335423000 | 2025-09-08 20:14:09.335423 | file:///data/nfs/backup/archive2 |
   |      1002 |        3 |        6 | FROZEN | AVAILABLE   | 1757333769705693000 | 2025-09-08 20:16:09.705693 | 1757333829705693000 | 2025-09-08 20:17:09.705693 | file:///data/nfs/backup/archive3 |
   |      1002 |        3 |        7 | FROZEN | AVAILABLE   | 1757333829705693000 | 2025-09-08 20:17:09.705693 | 1757333889705693000 | 2025-09-08 20:18:09.705693 | file:///data/nfs/backup/archive3 |
   |      1002 |        3 |        8 | ACTIVE | AVAILABLE   | 1757333889705693000 | 2025-09-08 20:18:09.705693 | 1757333949705693000 | 2025-09-08 20:19:09.705693 | file:///data/nfs/backup/archive3 |
   |      1002 |        3 |        9 | FROZEN | AVAILABLE   | 1757333949705693000 | 2025-09-08 20:19:09.705693 | 1757334009705693000 | 2025-09-08 20:20:09.705693 | file:///data/nfs/backup/archive3 |
   |      1002 |        3 |       10 | FROZEN | AVAILABLE   | 1757334009705693000 | 2025-09-08 20:20:09.705693 | 1757334069705693000 | 2025-09-08 20:21:09.705693 | file:///data/nfs/backup/archive3 |
   +-----------+----------+----------+--------+-------------+---------------------+----------------------------+---------------------+----------------------------+----------------------------------+
   10 rows set

   ```

   根据查询结果可知，租户 ID 为 `1002` 的租户下有 10 个日志归档 Piece，其中：

      - `PIECE_ID` 为 1、2、3、4 的日志归档 Piece 来源于同一归档路径 `file:///data/nfs/backup/archive1`。
      - `PIECE_ID` 为 5 的日志归档 Piece 来源于归档路径 `file:///data/nfs/backup/archive2`。
      - `PIECE_ID` 为 6、7、8、9、10 的日志归档 Piece 来源于归档路径 `file:///data/nfs/backup/archive3`。

   根据清理要求：

      - 需要按顺序清理 Piece。例如，不能先清理 `PIECE_ID` 为 2、3、4 中的一个或多个 Piece 之后，再清理 `PIECE_ID` 为 1 的 Piece；同样，也不能先清理 `PIECE_ID` 为 7、8、9、10 中的任意一个或多个 Piece 之后，再清理 `PIECE_ID` 为 6 的 Piece。

       可以按顺序同时清理其中的多个 Piece。例如，可以同时清理 1、2、3。
      - 指定多个 `PIECE_ID` 时，要求所有 `PIECE_ID` 均在同一个归档路径下。例如，不能同时清理 `PIECE_ID` 为 1、2、5 或 5、6、7 的 Piece。
 4. 执行以下命令，删除指定的日志归档 Piece。

   语句如下：

   ```sql
   ALTER SYSTEM DELETE ARCHIVELOG_PIECE piece_id[,piece_id,...] TENANT [=] tenant_name;

   ```

   其中：

      - `piece_id`：指定待删除的日志归档 Piece 的 ID，单条命令中支持同时指定多个 Piece。同时指定多个 `piece_id` 进行清理时，要求所有 `piece_id` 均在同一个备份路径下。不支持在同一条命令中清理多个路径下的日志归档 Piece。
      - `tenant_name`：指定待删除日志归档 Piece 的租户。

   示例如下：

      - 删除租户 `mysql001` 的 `piece_id` 为 5 的日志归档 Piece。

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM DELETE ARCHIVELOG_PIECE 5 TENANT = mysql001;

       ```
      - 同时删除租户 `mysql001` 的 `piece_id` 为 6、7、8、9 的 4 个日志归档 Piece。

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM DELETE ARCHIVELOG_PIECE 6,7,8,9 TENANT = mysql001;

       ```

### 用户租户清理本租户指定的日志归档 Piece

1. 用户租户的租户管理员登录到数据库。

   ```
 2. 获取待清理的日志归档 Piece 的 `piece_id`。

   ```shell
   obclient(root@mysql001)[(none)]> SELECT ROUND_ID, PIECE_ID, STATUS, FILE_STATUS, START_SCN, START_SCN_DISPLAY, END_SCN, END_SCN_DISPLAY, PATH FROM oceanbase.DBA_OB_ARCHIVELOG_PIECE_FILES;

   ```

   ```shell
   obclient(SYS@oracle001)[SYS]> SELECT ROUND_ID, PIECE_ID, STATUS, FILE_STATUS, START_SCN, START_SCN_DISPLAY, END_SCN, END_SCN_DISPLAY, PATH FROM SYS.DBA_OB_ARCHIVELOG_PIECE_FILES;

   ```
 3. 执行以下命令，删除指定的日志归档 Piece。

   语句如下：

   ```sql
   ALTER SYSTEM DELETE ARCHIVELOG_PIECE piece_id[,piece_id,...];

   ```

   其中：

   示例如下：

      - 删除本租户 `piece_id` 为 5 的日志归档 Piece。

       ```shell
       obclient> ALTER SYSTEM DELETE ARCHIVELOG_PIECE 5;

       ```
      - 同时删本租户 `piece_id` 为 6、7、8、9 的 4 个日志归档 Piece。

       ```shell
       obclient> ALTER SYSTEM DELETE ARCHIVELOG_PIECE 6,7,8,9;

       ```

## 相关文档

- [查看备份清理进度](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682405)
 - [查看备份清理结果](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682403)
 - [取消清理任务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682400)

 上一篇 下一篇 ![有帮助](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) 咨询热线
