Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107068
  • 博文数量: 38
  • 博客积分: 506
  • 博客等级: 下士
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 10:46
文章分类
文章存档

2014年(6)

2013年(10)

2012年(22)

我的朋友

分类: Oracle

2014-11-06 08:22:45

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

RMAN> change archivelog all crosscheck;
--------------------------------------------------------------------------------------------------
当手工删除了数据库的归档文件后,需要用这个命令进行同步。

(物理上删除了归档日志,但是控制文件并不知道;因此需要交叉检验以同步信息)

crosscheck archivelog all;

当手工删除了RMAN的备份集时,需要使用的是这个命令:
CROSSCHECK BACKUP;

他们的区别是同步的内容不同,一个是同步归档文件的状态,一个是同步RMAN备份信息。

-------------------------------------------
1. 进入rman
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelog all;
===========================
这2条命令做什么事情,原理是什么。下面说明一下:
在controlfile中记录着每一个archivelog的相关信息,当我们在OS下把这些物理文件delete掉或异常变动后,在controlfile中仍然记录着这些archivelog的信息,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是并不知道这些文件已经不存在了!这时候我们要做手工的清除。
crosscheck archivelog all;的作用就是检查控制文件和实际物理文件的差别。
delete expired archivelog all;就是同步控制文件的信息和实际物理文件的信息。
如果单独执行crosscheck而没有执行delete那么备份还是失败的,原因是那些控制文件的信息和实际的信息还是不同。

crosscheck backupset 是检查备份集和实际的文件
1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但
是并没有物理存在于备份介质上)
2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件
存在,将维持Available。如果原先标记为Expired的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),
crosscheck将把状态重新从Expired标记回Available。
3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的
备份集片,并将其标记为Expired。当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为
availabel,要删除丢弃备份delete obsolete

阅读(1585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~