oracle块恢复(block恢复)

一、概述

损坏范围只是一小部分块,文件仍可用,但特定块被损坏。在这种情况下,文件将保持联机,终端用户可能不知道存在问题。他们只有在尝试读取受损块时才会知晓:如果一个会话命中一个受损块,它将返回错误给用户进程,同时将一条消息写入警告日志。RMAN也可检测受损块,而且可修复它们。

二、详细信息

1.受损块的检测

默认情况下,RMAN备份时如果遇到受损块,则备份将立即终止。

但是如果备份前通过set maxcorrupt指定了可以遇到多少个坏块再停止备份,则在遇到坏块的个数不超过这个指定的值之前备份不会停止,并且会把坏块记录到V$BACKUP_CORRUPTION(针对备份集备份)或V$COPY_CORRUPTION(针对映像副本备份)中。

下列示例指示RMAN继续备份,只要遇到的受损块不超过100个:
RMAN> run{
set maxcorrupt for datafile 7 to 100;
backup datafile 7; }

在正常运行中,将不使用SET MAXCORRUPT关键字。没有它们,备份将失败,您就能立即
知道错误。然后用SET MAXCORRUPT再次运行备份,在完成后,查询视图确定损坏范围。

视图视图V$DATABASE_BLOCK_CORRUPTION中也查看坏块的记录

默认情况下,RMAN将总是检查物理损坏,也就是非RMAN中的“介质损坏”。例如Oracle 无法处理的块:无效的校验和或全是0的块。


也可让RMAN检查逻辑损坏,即“软件损坏”。这些检查将在备份文件时进行,而不管是作为映像副本还是备份到备份集。要重写默认值,

RMAN> backup nochecksum datafile 7;
将不检查物理损坏,但

RMAN> backup check logical datafile 6;
将检查逻辑损坏以及物理损坏。

2.块介质恢复
 

如果RMAN检测到-一个块受损,它可执行块介质恢复(BMR,Block Media Recovery)。BMR将
还原和恢复操作的粒度从数据文件改为受损块。与文件还原和恢复相比,这有两个大的好处:

首先,文件不必脱机;正常DML可继续。

其次,恢复的平均时间大大减少,因为在操作中只涉及受损块,而不是整个文件。唯一会 发生停机的情况是如果会话命中- -个已损坏的、 但还没有恢复的块。


BMR机制给RMAN提供一个需要恢复的-一个或多个块的列表。RMAN将从备份集或映像副本
中提取这些块的备份并写入数据文件。然后,RMAN将遍历自备份后生成的归档日志,提取与还原
的块相关的重做记录并应用它们。恢复将是完整的一逻辑 上不可能执行不完整恢复,只对一个块进行不完整恢复将使数据库处于不一致状态。 如果会话在BMR过程完成之前命中受损块,将仍会
接收ORA-01578错误,但很可能BMR操作将在用户发现问题前完成。

3.BLOCK RECOVER命令


BLOCK RECOVER命令指定一个要还原和恢复的一个或多个块的列表,可选地指定从其
进行还原的备份。如下列命令:
RMAN> block recover datafile 7 block 5;
指示RMAN从文件最近的备份集或映像副本中还原和恢复一个指定的块。

该语法还接受几个文件中的块列表:
RMAN> block recover datafile 7 block 5,6,7 datafile 9 block 21,25;


可能会有有关备份完整性的怀疑。在那种情况下,可指示RMAN从已知是好的备份中还原块:
RMAN> block recover datafile 7 block 5 from backupset 1093;


将从指定的备份集还原,也可通过标记指定:
RMAN> block recover datafile 7 block 5 from tag monthly_ whole;
如果损坏范围较大,BMR的另外两个选项可简化此过程。

其一,假定RMAN通过运行将
MAXCORRUPT设置为大于0的备份填充了视图V$DATABASE _BLOCK__CORRUPTION,那么
CORRUPTION LIST选项将指示RMAN还原和恢复视图中列出的每个块。

其二,要确保用于还原
的备份来自于发生损坏前的一一个时间点,可用UNTIL选项。例如,
RMAN> block recover corruption list until time sysdate - 7;
指示RMAN还原和恢复已被前一备 份操作发现受损的每个块,使用至少一周前创建的备份。

提示:
在BMR上下文中,关键字UNTIL并不表示不完整恢复。它意味着还原必须从特
定日期(序列号或SCN)之前创建的备份中进行。

案例:

 

select tablespace_name,segment_type,owner,segment_name from dba_extents where file_id=28 and 3085095 between block_id AND block_id + blocks - 1;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值