Oracle Redo Log 详解:DBA 需要了解的一切
2026-06-12
2026-06-12
2026-06-11
2026-06-11
Oracle 恢复管理器(RMAN)是 Oracle 原生的备份和恢复工具。人们使用 RMAN 备份 Oracle 数据库 来保护数据文件、控制文件、SPFILE、重做日志等。但有时,您会想要删除 RMAN 备份,原因如下:

当您运行 DELETE BACKUP 时,RMAN 会做两件事:
1. 从磁盘上物理删除备份片(或通知介质管理器将磁带空间标记为可重用)
2. 从控制文件和/或恢复目录中删除相应的记录。
如果您在操作系统级别删除了备份文件(rm 或 del),RMAN 的控制文件仍然认为这些备份存在。CROSSCHECK 后跟 DELETE EXPIRED 可以清理记录 — 但无法恢复物理文件。
对于磁带备份,介质管理器(Oracle Secure Backup 或第三方 SBT 库)决定物理磁带文件是否被真正删除。通常,它只是被标记为可重用。
下表列出了核心的 RMAN 删除语法以供快速参考。同时,我们将提供详细的分步指南,说明如何在不同的场景中使用它们。
|
命令 |
功能 |
使用时机 |
|
DELETE BACKUP |
从磁盘/磁带删除备份集或备份片,并删除目录记录。物理删除文件。 |
您确切知道要删除哪些备份键。与特定键一起使用 — 切勿在没有过滤条件的情况下运行。 |
|
DELETE BACKUP OF |
删除特定数据库对象(数据文件、表空间、归档日志、控制文件)的备份。 |
您想要删除单个表空间或所有归档日志备份,但保留其他备份不变。 |
|
DELETE OBSOLETE |
根据您配置的保留策略(RECOVERY WINDOW 或 REDUNDANCY)删除不再需要的备份。 |
定期清理。设置保留策略后每天运行。始终先用 REPORT OBSOLETE 预览。 |
|
DELETE EXPIRED |
删除 CROSSCHECK 标记为 EXPIRED(物理文件丢失)的备份的目录记录。不删除文件 — 仅删除元数据。 |
备份物理文件是在 RMAN 外部删除的(操作系统 rm 或 del),您需要清理目录以便恢复不会失败。 |
RMAN 的 DELETE BACKUP 没有直接的 UNTIL TIME 子句。但您可以使用 LIST BACKUP 来标识键,然后逐个删除。
以下是一个示例:
# 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 循环来实现精确的基于日期的删除。
RMAN> DELETE BACKUP OF ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';
这仅删除备份片(RMAN 制作的副本)。原始归档日志文件(例如 /u01/arch/arch_1_123.arc)保持不变。当您的备份存储已满,但您仍然需要原始日志进行时间点恢复或因为它们尚未被复制到另一个目标时,请使用此命令。
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
从归档日志目录中物理删除 .arc 或 .log 文件。备份片保持不变。
注意:
要删除不需要的 RMAN 备份片,请使用以下语法:
RMAN> DELETE BACKUPPIECE 'full_path_to_backup_piece';
BACKUPPIECE 后面跟的是备份片的完整文件系统路径或磁带句柄。您可以通过运行 LIST BACKUP OF DATABASE 找到此路径。
RMAN 会从磁盘中精确删除该备份片,并删除其目录记录。同一备份集中的其他备份片不会被删除。
如果您想自动删除 RMAN 备份,请设置保留策略。
示例:自动删除 RMAN 中超过 7 天的备份。您可以根据需要更改天数。
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
如果您想要一个每日脚本:
#!/bin/bash
rman target / catalog rman/rman@catdb <
有时,您在删除备份时可能会遇到一些错误。以下是解决方法。
这通常发生在删除磁带备份时。
解决方法:
RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;
RMAN> DELETE OBSOLETE;
CROSSCHECK + DELETE EXPIRED 会删除目录条目。如果在 crosscheck 后备份仍显示为 AVAILABLE,则文件可能存在但无法读取(权限问题、损坏)。在假设文件丢失之前,请使用 VALIDATE BACKUP。
使用 cron 作业管理备份对于单个或几个数据库来说是可行的。但是当您管理跨物理、虚拟和云环境的数十个 Oracle 实例时,为所有内容编写脚本会变得过于复杂。
i2Backup 由英方软件开发,采取了不同的方法。它是一个企业级备份平台,通过统一界面处理 Oracle 备份生命周期管理,包括自动清理,因此您无需为每个数据库编写和维护 RMAN 脚本。
管理员只需在中央 Web 控制台中定义备份计划和策略。然后软件会处理其余工作。它将按照预设的备份计划执行备份任务。当备份文件过时时,i2Backup 可以配置为根据您的保留规则自动删除它们。
Oracle 备份管理的关键能力:
以上就是关于如何删除 RMAN 中过期备份的全部内容。这并不复杂:
您还可以设置保留策略,在每日脚本中自动化该过程。如果您管理超过几个 Oracle 数据库,请考虑使用像 英方软件 的 i2Backup 这样的集中式平台来管理备份。
公告
邮件
销售