系统环境:AIX 6.1 Oracle 10g。
生产库上只保留7天的备份数据,7天之前的备份和归档日志都会被删除,删除的动作是利用脚本在crontab中执行实现的。
故障报错:ORA-19607: /dev/rlv_data_ctl03 is an active control file
删除归档和备份的脚本如下(省略了一些不相关的信息)
rman nocatalog target sys/manager@zgscdb2 msglog /rman_data/rman_script/log/ZGSCDB2_rman_del_backup_$RMAN_BEGIN_TIME.log append << EOF
run{
crosscheck backup;
crosscheck archivelog all;
report obsolete;
delete noprompt obsolete;
}
exit;
EOF
RMAN> list copy;
using target database control file instead of recovery catalog
List of Control File Copies
Key S Completion Time Ckp SCN Ckp Time Name
------- - --------------- ---------- --------------- ----
1 X 03-MAR-11 1943532 03-MAR-11 /dev/rlv_zs_ctr_03
List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
18579 1 9279 A 01-DEC-11 /arch_log/zgsc_db01_arch/1_9279_743864713.dbf
18581 1 9280 A 01-DEC-11 /arch_log/zgsc_db01_arch/1_9280_743864713.dbf
18585 1 9281 A 01-DEC-11 /arch_log/zgsc_db01_arch/1_9281_743864713.dbf
RMAN> show retention policy;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
可以看到存在controlfile的 拷贝为 /dev/rlv_zs_ctr_03
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /dev/rlv_zs_ctr_01, /dev/rlv_z
s_ctr_02, /dev/rlv_zs_ctr_03
这里存在/dev/rlv_zs_ctr_03为现有的控制文件,做到这一步,猜测问题原因如下:
通过rman进行了控制文件的拷贝而作为现有控制文件使用。而每次在删除无效备份时,由于备份的保留策略为1即只保留一份备份,故认为之前通过copy得来的控制文件为较旧的备份,需要删除。但是由于该copy正作为control file使用,无法删除,故报错ORA-19607。
按照上面思路,打了实施同事的电话,果然不出所料。由于该问题不影响正常使用,也没做进一步处理,等哪天有机会重启数据库时,重新配置control file路径即可。
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com