如何使用RMAN命令同步更新Oracle 19c控制文件,以手动清除过期备份记录?
- 内容介绍
- 文章标签
- 相关推荐
本文共计849个文字,预计阅读时间需要4分钟。
简单修改伪原创开头内容,不试图解问题,不啰嗦,不超过100字,直接输出结果:
delete expired backup 不生效,不是命令写错了,而是 rman 根本没机会删——它只清理控制文件里已标记为 expired 的记录,而这些标记得靠 crosscheck 扫出来。
为什么 DELETE EXPIRED BACKUP 显示 “0 objects deleted”
常见现象是执行完命令后返回 0 objects deleted,但磁盘空间没释放、LIST BACKUP 仍显示大量旧备份。这不是 bug,是 RMAN 的元数据清理机制依赖状态标记:
-
CROSSCHECK BACKUP才是真正“扫描磁盘并比对”的动作;不执行它,控制文件里那些物理文件早已被 rm 或移走的备份,依然保持AVAILABLE状态 -
DELETE EXPIRED BACKUP只删状态为EXPIRED的记录,不会主动触发扫描 - 如果用了恢复目录(recovery catalog),但没运行
RESYNC CATALOG,主库控制文件和目录元数据不一致,CROSSCHECK结果可能不准
CROSSCHECK 必须带 ALL 且注意执行范围
只输 CROSSCHECK BACKUP 默认只查最近一次备份集,漏掉大量历史条目。
本文共计849个文字,预计阅读时间需要4分钟。
简单修改伪原创开头内容,不试图解问题,不啰嗦,不超过100字,直接输出结果:
delete expired backup 不生效,不是命令写错了,而是 rman 根本没机会删——它只清理控制文件里已标记为 expired 的记录,而这些标记得靠 crosscheck 扫出来。
为什么 DELETE EXPIRED BACKUP 显示 “0 objects deleted”
常见现象是执行完命令后返回 0 objects deleted,但磁盘空间没释放、LIST BACKUP 仍显示大量旧备份。这不是 bug,是 RMAN 的元数据清理机制依赖状态标记:
-
CROSSCHECK BACKUP才是真正“扫描磁盘并比对”的动作;不执行它,控制文件里那些物理文件早已被 rm 或移走的备份,依然保持AVAILABLE状态 -
DELETE EXPIRED BACKUP只删状态为EXPIRED的记录,不会主动触发扫描 - 如果用了恢复目录(recovery catalog),但没运行
RESYNC CATALOG,主库控制文件和目录元数据不一致,CROSSCHECK结果可能不准
CROSSCHECK 必须带 ALL 且注意执行范围
只输 CROSSCHECK BACKUP 默认只查最近一次备份集,漏掉大量历史条目。

