---
title: "自动清理过期备份 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 自动清理过期备份 备份成功后，可以根据业务需要，为租户设置清理策略，设置了清理策略的租户将会每小时触发一次自动清理，以便过期的备份或归档数据能够及时得到清理。 注意事项 由于日志归档数据的清理依赖数据的备份，在清理日志归档数据前，请确认已存在数据备份文件，如果没有数据备份文件，则无法清理日志归档数据。 自动清理仅支持…
---
切换语言

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

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

# 自动清理过期备份

更新时间：2026-06-17 13:13:40

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

备份成功后，可以根据业务需要，为租户设置清理策略，设置了清理策略的租户将会每小时触发一次自动清理，以便过期的备份或归档数据能够及时得到清理。

## 注意事项

- 由于日志归档数据的清理依赖数据的备份，在清理日志归档数据前，请确认已存在数据备份文件，如果没有数据备份文件，则无法清理日志归档数据。
 - 自动清理仅支持清理 `DATA_BACKUP_DEST` 和 `LOG_ARCHIVE_DEST` 中当前指定的路径下的备份或归档数据，不会清理不再使用的备份路径和归档路径中的数据，对于已更换备份目的端或归档目的端的场景，原备份路径或归档路径下的数据只能通过手动方式进行清理。

  手动清理备份或归档数据的详细操作及说明，参见 [手动清理指定的备份或归档数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682909) 和 [手动清空备份路径或归档路径](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682911)。
 - 自动清理会保留至少一份有效的备份数据，如果仅有一份有效的备份数据，则这份有效数据将一直不会被清理。
 - 不同的备份介质，其备份或归档数据的自动清理结果有所不同：

     - 对于备份介质为 NFS 或兼容 S3 协议的对象存储（OBS、GCS 等） 的场景，在进行备份数据的清理时，系统会直接删除满足要求的备份文件。
     - 对于备份目的端为 S3/COS(以 S3 协议访问) 的场景，其备份文件的清理方式取决于 `data_backup_dest` 以及 `log_archive_dest` 中 `delete_mode` 参数的值，该参数的详细介绍，参见 [SET LOG_ARCHIVE_DEST](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005686268) 和 [SET DATA_BACKUP_DEST](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005686222)。
 - 特别地，对于路径属性中配置了 `enable_worm=true` 参数，在进行备份或归档数据的自动清理时，系统将按照 `RECOVERY_WINDOW` 指定的时间选择满足条件的备份或归档数据进行清理，但最终能否成功清理与该路径对应的清理模式（`delete_mode` 参数的值）以及对应 Bucket 的保留策略有关。

  #### 注意

  `enable_worm=true` 参数适用于开启了合规保留策略（WORM）的场景。

  例如，某一备份集在 `RECOVERY_WINDOW` 指定的时间之外，但其仍然在 WORM（Write Once Read Many）保留期内，则：

     - 如果该备份集的清理模式为 `delete`，则 OceanBase 数据库在清理该备份集时将会失败，需要等到该 Object 的保留期到期后，才能清理该备份集。
     - 如果该备份集的清理模式为 `tagging`，则 OceanBase 数据库会将该备份集打上 tag，最终由对象存储在生命周期结束并且过了 WORM 保留期后来执行删除。

## 系统租户为指定用户租户设置清理策略

1. 使用 `root` 用户登录集群的 `sys` 租户。
 2. 设置清理策略，相当于开启租户的自动清理功能。

   语句如下：

   ```sql
   ALTER SYSTEM ADD DELETE BACKUP POLICY [=] policy_name RECOVERY_WINDOW [=] recovery_window TENANT [=] tenant_name;

   ```

   其中：

      - `policy_name`：指定清理策略名，支持的取值如下：

            - `default`：表示自动清理的范围仅为租户当前 `DATA_BACKUP_DEST` 以及 `LOG_ARCHIVE_DEST` 参数中指定的路径下的备份和归档数据。
            - `log_only`：表示自动清理的范围仅为租户当前 `LOG_ARCHIVE_DEST` 参数中设置的归档路径中的日志。适用于没有数据备份，仅开启了日志归档的场景。清理策略设置为 `log_only` 时，要求该租户当前 `DATA_BACKUP_DEST` 参数的值必须为空，即未配置数据备份目的端。相应的，如果设置了清理策略为 `log_only`，则无法再通过设置 `DATA_BACKUP_DEST` 参数配置备份目的端。
      - `recovery_window` 参数用于控制备份数据可恢复的时间窗口。更多该参数的详细说明请参见 [recovery_window 参数介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682401)。
      - `TENANT` 参数用以指定清理策略生效的租户，需指定用户租户的租户名，且当前仅支持指定一个租户名。  

   #### 注意

   当前仅支持设置租户级清理策略，不支持设置集群级清理策略，每条命令只能为一个租户设置一个清理策略。

   示例如下：

      - 系统租户为 `mysql001` 租户指定清理策略

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM ADD DELETE BACKUP POLICY 'default' RECOVERY_WINDOW '7d' TENANT mysql001;

       ```
      - 系统租户为 `oracle001` 租户指定清理策略

       ```shell
       obclient(root@sys)[(none)]> ALTER SYSTEM ADD DELETE BACKUP POLICY 'log_only' RECOVERY_WINDOW '7d' TENANT oracle001;

       ```  

   #### 说明

   自动清理任务由后台系统每小时定时触发，因此清理策略设置完成后，可能需要等待一段时间（不超过一小时）才能查询到相对应的清理任务。
 3. 查看已设置的清理策略。

   设置成功后，可以通过 `oceanbase.CDB_OB_BACKUP_DELETE_POLICY` 视图查看所有租户清理策略。

   ```shell
   obclient(root@sys)[oceanbase]> SELECT TENANT_ID, POLICY_NAME, RECOVERY_WINDOW FROM oceanbase.CDB_OB_BACKUP_DELETE_POLICY;

   ```

   查询结果如下：

   ```shell
   +-----------+-------------+-----------------+
   | TENANT_ID | POLICY_NAME | RECOVERY_WINDOW |
   +-----------+-------------+-----------------+
   |      1002 | default     | 7d              |
   |      1004 | log_only    | 7d              |
   +-----------+-------------+-----------------+
   2 rows in set

   ```

## 用户租户设置本租户的清理策略

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

   #### 说明

   MySQL 租户的管理员用户为 `root` 用户，Oracle 租户的管理员用户为 `SYS` 用户。
 2. 设置清理策略，相当于开启租户的自动清理功能。

   语句如下：

   ```sql
   ALTER SYSTEM ADD DELETE BACKUP POLICY [=] policy_name RECOVERY_WINDOW [=] recovery_window;

   ```

   其中：

            - `default`：表示自动清理的范围仅为租户当前 `DATA_BACKUP_DEST` 以及 `LOG_ARCHIVE_DEST` 参数中指定的路径下的备份和归档数据。
            - `log_only`：表示自动清理的范围仅为租户当前 `LOG_ARCHIVE_DEST` 参数中设置的归档路径中的日志。适用于没有数据备份，仅开启了日志归档的场景。清理策略设置为 `log_only` 时，要求该租户当前 `DATA_BACKUP_DEST` 参数的值必须为空，即未配置数据备份目的端。相应的，如果设置了清理策略为 `log_only`，则无法再设置 `DATA_BACKUP_DEST` 参数。
      - `recovery_window`：用于控制备份数据可恢复的时间窗口。更多该参数的详细说明请参见 [recovery_window 参数介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682401)。

   示例如下：

       MySQL 模式   Oracle 模式

   MySQL 模式下，指定本租户的清理策略为 `default`，且备份可恢复的时间窗口为 7 天。

   ```shell
   obclient(root@mysql001)[(none)]> ALTER SYSTEM ADD DELETE BACKUP POLICY 'default' RECOVERY_WINDOW '7d';

   ```

   Oracle 模式下，指定本租户的清理策略为 `log_only`，且备份可恢复的时间窗口为 7 天。

   ```shell
   obclient(SYS@oracle001)[SYS] ALTER SYSTEM ADD DELETE BACKUP POLICY 'log_only' RECOVERY_WINDOW '7d';

   ```

   设置成功后，可以通过 `oceanbase.DBA_OB_BACKUP_DELETE_POLICY`（MySQL 模式） 视图或 `sys.DBA_OB_BACKUP_DELETE_POLICY`（Oracle 模式） 视图查看当前租户的清理策略。

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

   ```shell
   obclient(root@mysql001)[oceanbase]> SELECT POLICY_NAME, RECOVERY_WINDOW FROM oceanbase.DBA_OB_BACKUP_DELETE_POLICY;

   ```

   查询结果如下：

   ```shell
   +-------------+-----------------+
   | POLICY_NAME | RECOVERY_WINDOW |
   +-------------+-----------------+
   | default     | 7d              |
   +-------------+-----------------+
   1 row in set

   ```

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

   ```shell
   obclient(SYS@oracle001)[SYS]> SELECT POLICY_NAME, RECOVERY_WINDOW FROM SYS.DBA_OB_BACKUP_DELETE_POLICY;

   ```

   查询结果如下：

   ```shell
   +-------------+-----------------+
   | POLICY_NAME | RECOVERY_WINDOW |
   +-------------+-----------------+
   | log_only    | 7d              |
   +-------------+-----------------+
   1 row in set

   ```

## 后续操作

- 清理策略设置成功后，如果需要更换清理策略，需要先删除清理策略后再重新设置新的清理策略。删除清理策略的详细操作，参见 [删除清理策略](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682908)。
 - 清理策略设置成功后，如果期望尽快进行过期清理，可以通过手动方式立即触发一次过期清理。手动清理过期备份的详细操作及说明，参见 [手动触发过期清理](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682910)。

## 相关文档

- [查看备份清理进度](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) 咨询热线
