概述
今天主要是记录一个比较奇怪的地方,之前ASM归档目录会保留几天,有一次全清空后导致后面ASM归档目录每次都只保留最后一天归档,看是不是因为RMAN在删除归档日志的同时删除空目录导致。
1、删除ASM所存归档
之前因为归档空间满,在删除归档的时候同事执行了命令:
delete archivelog until time 'sysdate-1';
删除之前ASM上是保留有几天的归档的,删除后只剩最后一天保留。
2、编写定期归档脚本
后来写了个自动删除5天以前的归档脚本(本来是3天,然后改成5天)
![c30c9b794b69406759d76b9216bd60cf.png](https://img-blog.csdnimg.cn/img_convert/c30c9b794b69406759d76b9216bd60cf.png)
3、奇怪地方
观察了几天发现ASM都只保留了当天的归档,之前的归档不做保存。
![4ddc3b6b658d126c034d08db7d056d71.png](https://img-blog.csdnimg.cn/img_convert/4ddc3b6b658d126c034d08db7d056d71.png)
![05967a935a096c4710eb110bd664b046.png](https://img-blog.csdnimg.cn/img_convert/05967a935a096c4710eb110bd664b046.png)
这里我后来停了定期删除归档的脚本,但是还是有这情况,每天ASM上只保留最后一天归档。
4、查看实际备份情况
list backup of archivelog all completed before 'sysdate-7';
这个是在22号执行的,可以看到实际上是有备份的,但是备份路径为/backup,而不是在ASM上。而控制文件会自动备份在ASM上,即使/backup每天有自动备份。
![96049493dea98586842b12a84b8497c3.png](https://img-blog.csdnimg.cn/img_convert/96049493dea98586842b12a84b8497c3.png)
可以看到归档不备份在ASM上,备份在本地/backup目录,控制文件备份在ASM上。
![6e29312a95f202fb54ac3fe285e6bfb3.png](https://img-blog.csdnimg.cn/img_convert/6e29312a95f202fb54ac3fe285e6bfb3.png)
5、查看定时备份脚本
这里可以看到之前同事用了delete input的用法。
![57aace1ff571f92b01258dd1abf29bd7.png](https://img-blog.csdnimg.cn/img_convert/57aace1ff571f92b01258dd1abf29bd7.png)
注意:
delete input 只备份一个路径下的archivelog,只删除备份的目标路径下的archivelog;
delete all input 只备份一个路径下的archivelog,删除所有路径下的archivelog;
6、考虑是否触发bug:RMAN在删除归档日志的同时删除空目录。
查询了metalink文档,发现有可能是Oracle的bug,metalink文档Bug No. 4431215描述了这个问题。
如果在ASM上建立的目录名称和SID前缀相同,则这个目录下的所有目录一旦为空,就会被ASM实例自动删除,不管这个目录是ASM自动建立,还是用户手工建立的。
解决这个问题的办法倒是很多,比如将归档目录设置到日志文件的目录中,或者改变主目录的名称使其和ORACLE_SID有所区别。还有更简单的办法,在归档目录下拷贝一个小文件,使得归档被删除后,归档目录不为空,从而避免路径被清除。
这里我复制了spfile文件,等23号再观察下情况。
![82bca3e19ccf92dd0e1d0ccb9702f0a6.png](https://img-blog.csdnimg.cn/img_convert/82bca3e19ccf92dd0e1d0ccb9702f0a6.png)
7、测试验证
检查发现ASM上只保留了23号的归档文件,22号的自动删除了。不是因为bug(低版本才有可能,我的版本是11.2.0.4)导致。
![ed02fd4fbaf002c36557fc53dc5ea199.png](https://img-blog.csdnimg.cn/img_convert/ed02fd4fbaf002c36557fc53dc5ea199.png)
总结:
delete input删除已备份的归档日志,因为我只有一个fra归档路径(ASM上),应该是检测到/backup已经备份归档日志了,所以删除了ASM那边。后面会分享更多DBA方面的内容,感兴趣的朋友可以关注一下~
![80bc32de2dbaddc0715dc22f030ee0e7.gif](https://img-blog.csdnimg.cn/img_convert/80bc32de2dbaddc0715dc22f030ee0e7.gif)