[转帖]RMAN Crosscheck 和 Delete 命令的2个实例_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3660 | 回复: 0   主题: [转帖]RMAN Crosscheck 和 Delete 命令的2个实例        下一篇 
大红薯
注册用户
等级:少校
经验:1440
发帖:159
精华:0
注册:2011-7-21
状态:离线
发送短消息息给大红薯 加好友    发送短消息息给大红薯 发消息
发表于: IP:您无权察看 2011-8-5 16:19:53 | [全部帖] [楼主帖] 楼主

实例一
假如我们在oracle数据库在迁移当中不小心丢失了一个归档文件, 此时RMAN 会因为缺少归档日志而不能完成备份,而且Veritas等备份软件由于归档日志的异常导致归档日志备份失败也是经常碰到的。  解决方法很简单,执行下面2条命令即可:

RMAN>crosscheck archivelog all;
RMAN>delete expired archivelog all;


对这2条命令做一下说明:

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

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

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

实例二

这种情况可以通过CROSSCHECK BACKUPPIECE的方式对问题备份进行单独的检查:

 RMAN> crosscheck backuppiece ’/u01/backup/orcl_iljnvkad_1_1’;
RMAN> delete obsolete;


进行检查之后的备份就可以顺利的删除了。

 RMAN> crosscheck backupset 1612;
RMAN> delete backupset 1612;


  使用CROSSCHECK BACKUPSET的方式也可以,但是比较单独指定被删除的备份,而通过CROSSCHECK BACKUP是无法找到的。其他手工删除的备份,则没有这个问题。

RMAN>crosscheck backup;
RMAN>delete expired backup;


说明一下:

crosscheck backupset命令是检查备份集和实际的文件

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

关于crosscheck 的详细信息可以参考Blog中的第一部分:交叉效验RMAN 备份

RMAN 系列(七) ---- RMAN 维护

http://blog.csdn.net/tianlesoftware/archive/2010/07/12/5728097.aspx

    在删除过期对象的时候出现了RMAN06207和RMAN06208错误:
  RMAN> delete obsolete;
   RMAN06207: WARNING: 2 objects could not be deleted for DISK channel(s) due

 RMAN06208: to mismatched status. Use CROSSCHECK command to fix status


  用crosscheck backup检查的时候也没有检查这个备份:

 RMAN> crosscheck backup;




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论