暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle rman 清理无效的归档日志

生有可恋 2021-10-22
4093

最近检查ASM目录发现归档日志有断档,目录里遗留了很多2019年的归档,2021年的也有一些不连续。断档的这一部分应该在控制文件中没有记录,所以这部分归档文件就一直没有被发现。这些不连续的归档日志都属于无效日志,需要清掉。


通过 asmcmd 可以查看到实际目录



其中目录中有几段都是不连续的



通过 du 可以查看是否是空目录



最近的归档日志每天有30G左右,查了以前的目录有近110G。这些断档的目录,通过rman查看在控制文件中是否存在:


RMAN> list copy;


在控制文件中显示最早的日志时间为2021_09_28,之前的归档日志都不存在。这些过期日期因为长期未被发现,空间一直被占用。


为了让rman识别这些早期的日志,我们使用catalog重新装载一下

RMAN> catalog start with '+HISDATA/hisdb/archivelog/';


执行完后重新crosscheck查检一下文件是否物理存在

RMAN> crosscheck archivelog all;



然后再查看一下控制文件中存在,物理上不存在的文件

RMAN> list expired archivelog all;



通过completed before指定时间,发现不起作用。


RMAN> delete noprompt archivelog all completed before 'sysdate-30';



我换了条语句发现可行, until time 与 before 意思一样,但不知道为什么上一条语句不执行,有点懵。

RMAN> delete archivelog until time 'SYSDATE-30';



同时检查 asm 中目录数量,asm上的文件的删除速度与rman中显示的删除过程并不是同步的,要稍微慢于rman中的删除进度。



最终无效日志都得到清除。虽然不在控制文件中的归档日志,我们可以物理删除,但通过rman操作还是更方便一些。

文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论