Oracle RMAN如何执行删除旧备份并释放空间操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计686个文字,预计阅读时间需要3分钟。
相关专题:
delete obsolete 是 rman 清理旧备份最常用、也最安全的命令,但它不会无脑删光所有旧文件——它只删那些被当前 retention policy 判定为“不再需要”的备份。
为什么 DELETE OBSOLETE 有时不生效?
常见现象:执行了 DELETE OBSOLETE,但磁盘空间没释放,LIST BACKUP 仍显示大量旧备份。
- 保留策略未配置或配置不合理(比如仍是默认的
REDUNDANCY 1,只留一份,但你其实想留 7 天) - 控制文件中没有最新归档日志信息(尤其在 FRA 空间满、归档失败后)
- 备份记录状态是
AVAILABLE,但物理文件已被rm手动删掉,RMAN 还不知道 —— 此时需先CROSSCHECK BACKUP再DELETE EXPIRED BACKUP - 使用了恢复目录(catalog),但没连接 catalog,RMAN 只读控制文件,策略可能不同步
怎么确保 DELETE OBSOLETE 真的删掉该删的?
执行前必须确认三件事:
- 用
SHOW RETENTION POLICY查当前策略。生产环境建议设为RECOVERY WINDOW OF 7 DAYS或REDUNDANCY 2,避免误删 - 用
REPORT OBSOLETE先预览——它不删,只告诉你哪些会被删,适合上线前验证 - 加
NOPROMPT避免交互阻塞自动化脚本:DELETE NOPROMPT OBSOLETE - 如果用了 FRA,删完再查
V$FLASH_RECOVERY_AREA_USAGE确认空间是否释放
DELETE OBSOLETE 和 DELETE BACKUP 的关键区别
这是最容易混淆的两个命令:
-
DELETE OBSOLETE:按策略判断,只删“过期”备份,安全;但不会删掉你手动标记的KEEP备份 -
DELETE BACKUP:删所有备份集(不含归档日志),不管策略、不管标记,危险;常用于灾备环境重建前彻底清空 - 归档日志要单独处理:
DELETE ARCHIVELOG ALL或DELETE ARCHIVELOG FROM TIME 'SYSDATE-3',DELETE OBSOLETE默认不碰归档日志,除非配置了ARCHIVELOG DELETION POLICY
真正容易被忽略的是:RMAN 的“过期”判断依赖控制文件或恢复目录的元数据一致性。一旦物理文件被外部命令删掉,或归档中断导致控制文件落后,DELETE OBSOLETE 就会失效——这时候必须穿插 CROSSCHECK 和 DELETE EXPIRED 才能清理干净。
本文共计686个文字,预计阅读时间需要3分钟。
相关专题:
delete obsolete 是 rman 清理旧备份最常用、也最安全的命令,但它不会无脑删光所有旧文件——它只删那些被当前 retention policy 判定为“不再需要”的备份。
为什么 DELETE OBSOLETE 有时不生效?
常见现象:执行了 DELETE OBSOLETE,但磁盘空间没释放,LIST BACKUP 仍显示大量旧备份。
- 保留策略未配置或配置不合理(比如仍是默认的
REDUNDANCY 1,只留一份,但你其实想留 7 天) - 控制文件中没有最新归档日志信息(尤其在 FRA 空间满、归档失败后)
- 备份记录状态是
AVAILABLE,但物理文件已被rm手动删掉,RMAN 还不知道 —— 此时需先CROSSCHECK BACKUP再DELETE EXPIRED BACKUP - 使用了恢复目录(catalog),但没连接 catalog,RMAN 只读控制文件,策略可能不同步
怎么确保 DELETE OBSOLETE 真的删掉该删的?
执行前必须确认三件事:
- 用
SHOW RETENTION POLICY查当前策略。生产环境建议设为RECOVERY WINDOW OF 7 DAYS或REDUNDANCY 2,避免误删 - 用
REPORT OBSOLETE先预览——它不删,只告诉你哪些会被删,适合上线前验证 - 加
NOPROMPT避免交互阻塞自动化脚本:DELETE NOPROMPT OBSOLETE - 如果用了 FRA,删完再查
V$FLASH_RECOVERY_AREA_USAGE确认空间是否释放
DELETE OBSOLETE 和 DELETE BACKUP 的关键区别
这是最容易混淆的两个命令:
-
DELETE OBSOLETE:按策略判断,只删“过期”备份,安全;但不会删掉你手动标记的KEEP备份 -
DELETE BACKUP:删所有备份集(不含归档日志),不管策略、不管标记,危险;常用于灾备环境重建前彻底清空 - 归档日志要单独处理:
DELETE ARCHIVELOG ALL或DELETE ARCHIVELOG FROM TIME 'SYSDATE-3',DELETE OBSOLETE默认不碰归档日志,除非配置了ARCHIVELOG DELETION POLICY
真正容易被忽略的是:RMAN 的“过期”判断依赖控制文件或恢复目录的元数据一致性。一旦物理文件被外部命令删掉,或归档中断导致控制文件落后,DELETE OBSOLETE 就会失效——这时候必须穿插 CROSSCHECK 和 DELETE EXPIRED 才能清理干净。

