刚刚,数据库报磁盘空间不足,登陆上去发现归档已经很多天没有被自动删除
用rman手动执行删除归档的命令,发现报了如下的错误
RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process .
证明此时数据库还正在需要应用这些归档
然后我们先登录到物理备库上面去看看,发现物理备库与主库日志是同步的,所以不存在应用归档的问题,那么是什么导致的呢?
此外还有一种情况是ogg的问题对于这种问题,我们可以用如下的方法
先看看是不是有capture进程有问题
select capture_name, status, captured_scn, applied_scn, capture_type from dba_capture;
如果有问题,可以用如下的命令来删除capture进行
exec dbms_capture_adm.drop_capture(capture_name =>'OGG2$EXT_EMCF3359B3');
但我们通过查看capture进行的情况发现,此时他是正常的,也不存在问题。
后来,自己查看每天删除归档的日志,发现不能删除归档的那天正好是我们物理备库由于空间不足进行切换的那天,问题一下子就清晰了
罪魁祸首就是还有另外一条归档路径指向了已经不存在的切换完的老的物理备库,而我们知识把这条路径defer掉了,并没有disable掉,
我们通过v$archive_dest 的视图,发现这条不存在的归档路径还是active的状态,所以oracle认为还是需要保留那个时候的归档,所以才
造成了归档日志的不能删除。
我们在清空这条归档路径以后,发现使用rman,可以删除归档日志了,问题解除