为什么要在 RMAN 中删除备份

Oracle 恢复管理器(RMAN)是 Oracle 原生的备份和恢复工具。人们使用 RMAN 备份 Oracle 数据库 来保护数据文件、控制文件、SPFILE、重做日志等。但有时,您会想要删除 RMAN 备份,原因如下:

  • 释放备份存储空间:几周的全备份加上归档日志可能会填满您的快速恢复区。当这种情况发生时,数据库可能会冻结。只需删除不必要的备份即可释放存储空间。
  • 目录不同步。如果您在操作系统级别删除了备份文件(绕过 RMAN),RMAN 仍然会将它们列为 AVAILABLE。由于文件不存在,恢复将会失败。您需要删除过期的目录记录来清理混乱。
  • 保留策略发生变化。业务需求从“保留 30 天”变为“保留 7 天”。那些较旧的备份变成了过时备份。它们一直占用空间,直到您运行 DELETE OBSOLETE。

rman 中执行 delete backup 命令删除备份的操作界面

什么是 RMAN 备份删除?

当您运行 DELETE BACKUP 时,RMAN 会做两件事:

1. 从磁盘上物理删除备份片(或通知介质管理器将磁带空间标记为可重用)

2. 从控制文件和/或恢复目录中删除相应的记录。

如果您在操作系统级别删除了备份文件(rm 或 del),RMAN 的控制文件仍然认为这些备份存在。CROSSCHECK 后跟 DELETE EXPIRED 可以清理记录 — 但无法恢复物理文件。

对于磁带备份,介质管理器(Oracle Secure Backup 或第三方 SBT 库)决定物理磁带文件是否被真正删除。通常,它只是被标记为可重用。

如何逐步删除 RMAN 中的备份

下表列出了核心的 RMAN 删除语法以供快速参考。同时,我们将提供详细的分步指南,说明如何在不同的场景中使用它们。

命令

功能

使用时机

DELETE BACKUP

从磁盘/磁带删除备份集或备份片,并删除目录记录。物理删除文件。

您确切知道要删除哪些备份键。与特定键一起使用 — 切勿在没有过滤条件的情况下运行。

DELETE BACKUP OF

删除特定数据库对象(数据文件、表空间、归档日志、控制文件)的备份。

您想要删除单个表空间或所有归档日志备份,但保留其他备份不变。

DELETE OBSOLETE

根据您配置的保留策略(RECOVERY WINDOW 或 REDUNDANCY)删除不再需要的备份。

定期清理。设置保留策略后每天运行。始终先用 REPORT OBSOLETE 预览。

DELETE EXPIRED

删除 CROSSCHECK 标记为 EXPIRED(物理文件丢失)的备份的目录记录。不删除文件 — 仅删除元数据。

备份物理文件是在 RMAN 外部删除的(操作系统 rm 或 del),您需要清理目录以便恢复不会失败。

删除超过 7 天或特定日期的备份

RMAN 的 DELETE BACKUP 没有直接的 UNTIL TIME 子句。但您可以使用 LIST BACKUP 来标识键,然后逐个删除。

以下是一个示例:

sql
# Find backups older than 7 days
RMAN> LIST BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE-7';

-- Note the BS Key values, then delete each
RMAN> DELETE BACKUP 2048;
RMAN> DELETE BACKUP 2049;

对于脚本编写,可以使用 REPORT OBSOLETE 配合临时保留策略更改 — 但这有删除过多的风险。大多数 DBA 会编写一个基于 V$BACKUP_PIECE 的小型 PL/SQL 循环来实现精确的基于日期的删除。

仅删除归档日志备份

  • 如果您想释放归档日志备份片占用的空间,但保留磁盘上的原始归档日志文件,请使用:
sql
RMAN> DELETE BACKUP OF ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';

这仅删除备份片(RMAN 制作的副本)。原始归档日志文件(例如 /u01/arch/arch_1_123.arc)保持不变。当您的备份存储已满,但您仍然需要原始日志进行时间点恢复或因为它们尚未被复制到另一个目标时,请使用此命令。

  • 如果您想删除原始的归档数据文件副本,请使用 DELETE ARCHIVELOG,而不是 DELETE BACKUP OF ARCHIVELOG。
bash
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;

从归档日志目录中物理删除 .arc 或 .log 文件。备份片保持不变。

注意

  1. 为了安全起见,只有在确认原始归档日志已备份后才删除它们(使用 BACKED UP … TIMES 子句)。
  2. 如果您实际上需要释放归档日志目标位置的磁盘空间,运行 DELETE BACKUP OF ARCHIVELOG 命令不会释放任何空间。相反,如果您只想删除备份文件,运行 DELETE ARCHIVELOG 命令会删除错误的文件。

    手动删除特定的备份片

    要删除不需要的 RMAN 备份片,请使用以下语法:

    bash
    RMAN> DELETE BACKUPPIECE 'full_path_to_backup_piece';

    BACKUPPIECE 后面跟的是备份片的完整文件系统路径或磁带句柄。您可以通过运行 LIST BACKUP OF DATABASE 找到此路径。

    RMAN 会从磁盘中精确删除该备份片,并删除其目录记录。同一备份集中的其他备份片不会被删除。

    警告:删除备份片会使整个备份集不完整。如果您删除了一个多片备份集中的一片,您将无法再从该备份集恢复。仅在您确定该备份片已损坏或过时时才使用此命令。

    使用保留策略自动删除 RMAN 备份

    如果您想自动删除 RMAN 备份,请设置保留策略。

    示例:自动删除 RMAN 中超过 7 天的备份。您可以根据需要更改天数。

    sql
    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

    如果您想要一个每日脚本:

    bash
    #!/bin/bash
    rman target / catalog rman/rman@catdb <

    RMAN 中删除备份时的常见问题排查

    有时,您在删除备份时可能会遇到一些错误。以下是解决方法。

    1. “RMAN-06091: no channel allocated for maintenance”

    这通常发生在删除磁带备份时。

    解决方法:

    bash
    RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;
    RMAN> DELETE OBSOLETE;

    2. 恢复目录显示有备份,但物理文件丢失

    CROSSCHECK + DELETE EXPIRED 会删除目录条目。如果在 crosscheck 后备份仍显示为 AVAILABLE,则文件可能存在但无法读取(权限问题、损坏)。在假设文件丢失之前,请使用 VALIDATE BACKUP。

    使用 i2Backup 进行集中备份管理

    使用 cron 作业管理备份对于单个或几个数据库来说是可行的。但是当您管理跨物理、虚拟和云环境的数十个 Oracle 实例时,为所有内容编写脚本会变得过于复杂。

    i2Backup 由英方软件开发,采取了不同的方法。它是一个企业级备份平台,通过统一界面处理 Oracle 备份生命周期管理,包括自动清理,因此您无需为每个数据库编写和维护 RMAN 脚本。

    管理员只需在中央 Web 控制台中定义备份计划和策略。然后软件会处理其余工作。它将按照预设的备份计划执行备份任务。当备份文件过时时,i2Backup 可以配置为根据您的保留规则自动删除它们。

    Oracle 备份管理的关键能力

    • 集中保留策略:设置一次保留窗口或冗余规则,应用于所有 Oracle 实例,让系统处理清理工作,无需每个数据库都设置 cron 作业。
    • 细粒度恢复选项:在 CDB、PDB、归档日志或控制文件级别进行恢复,无需提取整个备份集。还支持基于时间戳的时间点恢复。
    • 多种存储目标:备份到本地磁盘、磁带库、NAS 或对象存储,内置重复数据删除功能以减少占用空间。
    • 用于勒索软件防护的不可变备份:i2Backup 使用不可变存储和防篡改驱动程序,防止未经授权的删除。

    您现在可以获得 60 天免费试用:

    企业级数据保护与迁移解决方案

    英方软件提供容灾、备份、数据库同步等产品,帮助企业保障业务连续性与数据安全,支持 VMware、Hyper-V、云环境等多种场景。了解更多 »

    60天免费试用
    已有超过 2000 万用户下载使用

    结论

    以上就是关于如何删除 RMAN 中过期备份的全部内容。这并不复杂:

    • 使用 DELETE OBSOLETE 根据您的保留策略进行定期清理。
    • 当物理文件在 RMAN 外部丢失时,使用 CROSSCHECK + DELETE EXPIRED。
    • 只有在您确切知道备份键或备份片时才使用 DELETE BACKUP。
    • 永远不要在操作系统级别删除备份文件。这会破坏目录,导致空间无法回收和恢复不可靠。

    您还可以设置保留策略,在每日脚本中自动化该过程。如果您管理超过几个 Oracle 数据库,请考虑使用像 英方软件 的 i2Backup 这样的集中式平台来管理备份。

    博客分类底部

    准备好构建企业数据韧性了吗?

    立即开启 60 天免费试用,或预约产品演示,了解英方软件如何为您的核心业务提供「零中断、零丢失」的数据保护。

    请先完成图形验证

    验  证  码:

    英方官网验证码
    第三方二维码 第三方二维码
    请先完成图形验证

    验  证  码:

    英方用户注册验证码
    隐私声明
    当您在本网站进行合作伙伴注册登记,本网站将收集您的相关信息,并保存记录。本网站收集的个人信息包括但不限于:姓名、地址、公司、所在地区、电话号码以及电子邮件地址等。您主动提供的信息越多及越准确,我们就能够更好地为您提供有关服务。
    英方公告铃铛图标
    英方公告铃铛图标

    公告

    英方侧边栏向右箭头
    英方高亮提示圆点
    英方软件 2026 年端午节放假通知
    尊敬的各位客户、合作伙伴:
    根据国家法定节假日安排,我司2026 年端午节放假时间为 6 月 19 日(周五)—6 月 21 日(周日),共 3 天,6 月 22 日(周一)恢复正常办公。
    假期期间,日常业务咨询、工单处理、技术支持等服务将相应顺延。如有紧急事务,可联系专属对接人员。
    由此带来的不便,敬请谅解。祝愿大家端午安康,万事顺遂!
    英方软件
    2026 年 6 月 9 日
    英方邮件咨询图标
    英方邮件咨询图标

    邮件

    英方销售支持图标
    英方销售支持图标

    销售

    英方侧边栏向右箭头
    联系销售:400-0078-655 转 1
    英方社交分享图标
    英方社交分享图标

    分享

    英方侧边栏向右箭头
    英方微信公众号图标
    微信二维码1 微信二维码2
    英方新浪微博图标 英方知乎官方账号图标 英方今日头条图标