zoukankan      html  css  js  c++  java
  • 【转】BMR(Block Media Recovery)

    关于RMAN的块恢复。Block是oracle数据库最小恢复单位。鉴于此,BMR可以大大缩短恢复的时间,另外,在进行BMR时不需要停掉数据库,可以直接在数据库open状态对数据文件进行恢复,只是需要恢复的块被锁定无法访问,可以说对应用的影响非常小。

    何时需要进行BMR?
    Block media recovery 不适合用在丢失数据的起点的情况,比如数据文件丢失了,这种情况下做数据文件的介质恢复会是最好的选择。BMR并不是用来取代传统方法的,而是有益的补充。

    大多数情况下,数据库将一个block打上坏块的标记,那么对整个数据库来说这个块都是不可以用的,数据库会offline该坏块,阻止用户对该块进行访问。而在随后对该块的读取都会出现错误,大部分会报I/O错误,直到该坏块被修复。这个时候你只能使用BMR对坏块进行修复(之所以说你只能是因为你的数据库不能因为这个而停止服务)。一般我们会在以下文件中发现坏块报告:
    1.Error messages in standard output;
    2.Alert.log文件中
    3.用户的trace文件
    4.在使用 analyze table 和 analyze index时可能会出现
    5.在使用 dbverify工具对数据文件进行检查时
    6.第三方的介质管理软件中

    以下是user trace文件中出现的坏块错误:
    ORA-01578: ORACLE data block corrupted (file # 7, block # 3)
    ORA-01110: data file 7: '/oracle/oradata/trgt/tools01.dbf'
    ORA-01578: ORACLE data block corrupted (file # 2, block # 235)
    ORA-01110: data file 2: '/oracle/oradata/trgt/undotbs01.dbf'

    一旦发现有坏块的存在,就可以使用blockrecover对坏块进行恢复
    Blockrecover 
    datafile 7 block 3
    datafile 2 block 235;

    Blockrecover是基于redo的,如果在恢复时,发现找不到redo,则恢复不一定会成功。这里说不一定是因为在blockrecover过程中,所有的block在blockrecover过程中都是独立的,不会去与其他文件的文件进行比较的,所以blockrecover都是成功的。但在blockrecover之后,RMAN会将进行后续的检查工作,这个时候,如果RMAN发现该块的ckp与其他不一致,则rman会自动查找相关的redo,如果该block有被format过,那么则会主动忽略丢失的redo,则恢复成功,如果不是这样则会恢复失败。

  • 相关阅读:
    运动第六课时
    java获取json数组格式中的值
    高性能网站建设进阶指南解说 新风宇宙
    检查素数的正则表达式 新风宇宙
    A*算法(游戏中寻路算法)特别奉献php实现源码? 新风宇宙
    几个值得放在common中的函数 新风宇宙
    以x%的概率执行某段代码 新风宇宙
    战场每步操作记录的存放方法 新风宇宙
    我的个人简历(最近离职找工作) 新风宇宙
    关于腾讯截取字符串问题 新风宇宙
  • 原文地址:https://www.cnblogs.com/future2012lg/p/3675583.html
Copyright © 2011-2022 走看看