Oracle备份事务日志出错,提示ORA-19625:识别文件xxxx\ORAAHIVE\ARC6623xxx.001时出错

描述:

rman下oracle的数据库全备份+归档日志

backup database plus archivelog;

时报错,事务日志出错,提示ORA-19625:识别文件D:\ORACLE\PRODUCT\10.2.0\ORAARCHIVE\ARC66723_0649076351.001时失败。

分析问题

原因在于操作系统下删除了这个归档日志,这个日志还没备份过,rman去备份的时候,找不到这个归档就出错了。

解决方案

# crosscheck archivelog all;

# delete expired archivelog all;

这2条命令做什么事情,原理是什么。下面说明一下:
在 controlfile中记录着每一个archivelog的相关信息,当我们在OS下把这些物理文件delete掉或异常变动后,在 controlfile中仍然记录着这些archivelog的信息,当我们手工清除archive目录下的文件后,这些记录并没有被我们从 controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了!这时候我们要做手工的清除。

#crosscheck archivelog all:作用就是检查控制文件和实际物理文件的差别。
#delete expired archivelog all:就是同步控制文件的信息和实际物理文件的信息。

注意:如果单独执行crosscheck而没有执行delete那么备份还是失败的,原因是那些控制文件的信息和实际的信息还是不同。

参考文档http://space.itpub.net/13024285/viewspace-629682