可以看到最早可读的全备份是在2015-09-13 00:02:05这个时间点,那么这个时间点之前的备份文件实际是可以清理掉的。
根据前面备份脚本,可以确定目录下后缀为.log和.bak可以清除掉,如何获取到这个时间点之前呢?
find查找158天前创建的后缀为.log和.bak的文件数量:
-bash-3.2$ find *.log -mtime +158|wc -l 254 -bash-3.2$ find *.bak -mtime +158|wc -l 1021确定都是要删除的无用文件后,可以删除掉:
find *.log -mtime +158|xargs rm -rf find *.bak -mtime +158|xargs rm -rf最后验证下RMAN备份是否受到影响(当然不会受到影响了,我前面删除的都是无用的历史文件),
--交叉验证备份文件有效性 RMAN> crosscheck backup; 输出略..(实际都是available状态的备份文件,说明我之前删除的文件确实是没用的) --删除保留策略之外的文件 RMAN> delete obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to recovery window of 15 days using channel ORA_DISK_1 no obsolete backups found --删除过期的备份文件(这里没有,再次说明了我之前删除的文件确实是没用的) RMAN> delete expired backup; using channel ORA_DISK_1 specification does not match any backup in the repository --看当前数据库有哪些文件需要备份(没有结果)。 RMAN> report need backup; RMAN retention policy will be applied to the command RMAN retention policy is set to recovery window of 15 days Report of files that must be backed up to satisfy 15 days recovery window File Days Name ---- ----- ----------------------------------------------------- RMAN>此时再看,备份目录的空间终于大幅得到了释放。解决了问题。
4.总结