您当前的位置: AG亚游集团 > 数据库教程 > DB2教程 > RMAN备份恢复之归档日志对BLOCKRECOVER的影响

RMAN备份恢复之归档日志对BLOCKRECOVER的影响

作者:guanchaofeng 来源:不详 发布时间: 2009-06-27 20:56 点击: 次
上面一篇简单的介绍了一下RMAN的BLOCKRECOVER的用法,这篇打算介绍一下缺失归档日志对BLOCKRECOVER的影响。 为了演示归档对BLOCKRECOVER的影响,先构造一个例子: RMANbackuptablespacetools; 启动backup于16-6月-07 使用通道ORA_DISK_1 通道ORA_DISK_1:正在

AG亚游集团,  国航飞行总队第一大队大队长吉学勇人称“铁人机长”,17岁参军成为一名空军飞行员、1997年成为国航首批空客飞行员,如今是管理着20多架A330飞机、300多名中外飞行员的大队长。吉学勇给人的印象是一个稳重踏实、值得信赖的飞行员和管理者。“铁人机长”吉学勇与他的A330一起承担了许多特殊的飞行,经受了众多的考验。

【环球网综合报道】据英国《每日邮报》12月5日报道,近日,一段群象保护幼崽过马路的暖心视频在YouTube上迅速蹿红。该视频拍摄于南非克鲁格国家公园,视频中,一群大象齐心帮助幼崽过马路,画面温馨,令人感动。在家可开啥小型加工厂  卢山:林总在有一次谈话当中曾经告诉我,大陆的IT竞争并不激烈,经常是几十块钱的讨价还价,而在台湾一块钱一块钱讨价还价。他羡慕你的是把1毛多钱短信变成好几块钱。接下来把话题交给杨总为什么揭晓把1毛的短信到3块钱甚至更高的格。

RMAN备份恢复之归档日志对BLOCKRECOVER的影响

  上面一篇简单的介绍了一下RMAN的BLOCKRECOVER的用法,这篇打算介绍一下缺失归档日志对BLOCKRECOVER的影响。
  
  为了演示归档对BLOCKRECOVER的影响,先构造一个例子:
  
  RMAN>backuptablespacetools;
  
  启动backup于16-6月-07
  
  使用通道ORA_DISK_1
  
  通道ORA_DISK_1:正在启动full数据文件备份集
  
  通道ORA_DISK_1:正在指定备份集中的数据文件
  
  输入数据文件fno=00005name=F:ORACLEORADATATEST1TOOLS01.DBF
  
  通道ORA_DISK_1:正在启动段1于16-6月-07
  
  通道ORA_DISK_1:已完成段1于16-6月-07
  
  段handle=F:ORACLEORACLE920DATABASEHIKFE30_1_1comment=NONE
  
  通道ORA_DISK_1:备份集已完成,经过时间:00:00:03
  
  完成backup于16-6月-07
  
  首先备份一下表空间,这个表空间的备份用来作为BLOCKRECOVER的全备份基础。
  
  SQL>CREATETABLETESTTABLESPACETOOLSASSELECTROWNUMID,A.*FROMDBA_OBJECTSA;
  
  表已创建。
  
  SQL>SELECTCOUNT(*)FROMTEST;
  
  COUNT(*)
  
  ----------
  
  28036
  
  SQL>SELECTROWIDFROMTESTWHEREID=1000;
  
  ROWID
  
  ------------------
  
  AAAHApAAFAAAAAbAA8
  
  SQL>SELECTIDFROMTEST
  
  2WHEREROWID>='AAAHApAAFAAAAAbAAA'
  
  3ANDROWID<'AAAHApAAFAAAAAcAAA';
  
  ID
  
  ----------
  
  940
  
  941
  
  942
  
  943
  
  944
  
  945
  
  946
  
  947
  
  .
  
  .
  
  .
  
  1004
  
  1005
  
  1006
  
  已选择67行。
  
  SQL>SELECTDISTINCTDBMS_ROWID.ROWID_RELATIVE_FNO(ROWID),
  
  2DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
  
  3FROMTEST
  
  4WHEREID>=940
  
  5ANDID<=1006;
  
  DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
  
  ------------------------------------------------------------------------
  
  527
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>SELECTMAX(SEQUENCE#)FROMV$ARCHIVED_LOG;
  
  MAX(SEQUENCE#)
  
  --------------
  
  321
  
  SQL>UPDATETESTSETOBJECT_NAME=LOWER(OBJECT_NAME)WHEREID=1000;
  
  已更新1行。
  
  SQL>COMMIT;
  
  提交完成。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>DELETETESTWHEREID=1;
  
  已删除1行。
  
  SQL>COMMIT;
  
  提交完成。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>UPDATETESTSETOBJECT_TYPE='TEST'WHEREID=10000;
  
  已更新1行。
  
  SQL>COMMIT;
  
  提交完成。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>CREATETABLETEST2(IDNUMBER);
  
  表已创建。
  
  SQL>INSERTINTOTEST2VALUES(1);
  
  已创建1行。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>ALTERSYSTEMSWITCHLOGFILE;
  
  系统已更改。
  
  SQL>SELECTNAMEFROMV$ARCHIVED_LOGWHERESEQUENCE#>321;
  
  NAME
  
  ------------------------------------------------------------
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00322.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00323.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00324.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00325.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00326.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00327.001
  
  F:ORACLEORADATATEST1ARCHIVELOGARC00328.001
  
  已选择7行。
  
  SQL>SELECTSEQUENCE#FROMV$LOG;
  
  SEQUENCE#
  
  ----------
  
  328
  
  329
  
  327
  
  首先建立一张测试表,在这个表中,ID在940和1006之间的记录存储在DATAFILE5BLOCK27中。在归档322中记录了TEST表的ID等于1000的记录的更新,这个更新发生在DATAFILE5BLOCK27上。随后在归档323中,删除了ID等于1的记录,这条记录与BLOCK27无关。在归档324中,更新了ID等于10000的记录,这个修改与BLOCK27也无关。在归档325中,新建TEST2表,并插入数据。归档326就是一个空文件。
  
  因此,除了归档322外,从323到325都与BLOCK27的修改无关。根据Oracle的文档,这些归档的缺失将不会影响BLOCK27的恢复。
  
  为了验证文档的说法,下面将归档322到326修改名称,使得Oracle在恢复时无法找到归档日志。
  
  最后执行的几次ALTERSYSTEMSWITCHLOGFILE操作,是确保SEQUENCE为326的联机重做日志已经被重用,避免Oracle利用联机重做日志来代替归档日志。
  
  准备工作完毕,下面开始模拟坏块。仍然是通过UtralEdit对数据文件进行修改,先是定位数据块的偏移地址:
  
  SQL>SHOWPARAMETERBLOCK_SIZE
  
  NAMETYPEVALUE
  
  -------------------------------------------------------------------------
  
  db_block_sizeinteger8192
  
  SQL>SELECTTO_CHAR(8192*27,'XXXXX')FROMDUAL;
  
  TO_CHA
  
  ------
  
  36000
  
  下面对地址36000后面的数据进行修改,并保存。
  
  执行SQL语句,可以看到下面的错误:
  
  SQL>SELECTCOUNT(*)FROMTEST;
  
  SELECTCOUNT(*)FROMTEST
  
  *
  
  ERROR位于第1行:
  
  ORA-01578:ORACLE数据块损坏(文件号5,块号27)
  
  ORA-01110:数据文件5:'F:ORACLEORADATATEST1TOOLS01.DBF'
  
  下面可以对损坏的数据块进行BLOCKRECOVER,注意这时归档322到326已经被修改名称。
  
  RMAN>blockrecoverdatafile5block27;
  
  启动blockrecover于17-6月-07
  
  正在使用目标数据库控制文件替代恢复目录
  
  分配的通道:ORA_DISK_1
  
  通道ORA_DISK_1:sid=14devtype=DISK
  
  通道ORA_DISK_1:正在恢复块
  
  通道ORA_DISK_1:正在指定要从备份集恢复的块
  
  正在恢复数据文件00005的块
  
  通道ORA_DISK_1:已从备份段1恢复块
  
  段handle=F:ORACLEORACLE920DATABASEHIKFE30_1_1tag=TAG20070617T020728params=NULL
  
  通道ORA_DISK_1:块恢复已完成
  
  正在开始介质的恢复
  
  存档日志线程1序列327已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00327.001存在于磁盘上
  
  存档日志线程1序列328已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00328.001存在于磁盘上
  
  存档日志线程1序列329已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00329.001存在于磁盘上
  
  RMAN-00571:===========================================================
  
  RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
  
  RMAN-00571:===========================================================
  
  RMAN-03002:failureofblockrecovercommandat06/17/200702:33:18
  
  RMAN-06053:unabletoperformmediarecoverybecauseofmissinglog
  
  RMAN-06025:nobackupoflogthread1seq326scn58749837foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq325scn58749812foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq324scn58749793foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq323scn58749778foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq322scn58749749foundtorestore
  
  这个错误的出现是正常的,由于归档322中包含了对BLOCK27的修改,下面恢复归档322的原始名称,再次执行恢复:
  
  RMAN>blockrecoverdatafile5block27;
  
  启动blockrecover于17-6月-07
  
  使用通道ORA_DISK_1
  
  通道ORA_DISK_1:正在恢复块
  
  通道ORA_DISK_1:正在指定要从备份集恢复的块
  
  正在恢复数据文件00005的块
  
  通道ORA_DISK_1:已从备份段1恢复块
  
  段handle=F:ORACLEORACLE920DATABASEHIKFE30_1_1tag=TAG20070617T020728params=NULL
  
  通道ORA_DISK_1:块恢复已完成
  
  正在开始介质的恢复
  
  存档日志线程1序列327已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00327.001存在于磁盘上
  
  存档日志线程1序列328已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00328.001存在于磁盘上
  
  存档日志线程1序列329已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00329.001存在于磁盘上
  
  RMAN-00571:===========================================================
  
  RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
  
  RMAN-00571:===========================================================
  
  RMAN-03002:failureofblockrecovercommandat06/17/200702:36:18
  
  RMAN-06053:unabletoperformmediarecoverybecauseofmissinglog
  
  RMAN-06025:nobackupoflogthread1seq326scn58749837foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq325scn58749812foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq324scn58749793foundtorestore
  
  RMAN-06025:nobackupoflogthread1seq323scn58749778foundtorestore
  
  仍然报错,这说明文档上描述的BLOCKRECOVER可以跨越无关的日志的说法是有问题的。
  
  下面依次恢复323、324的名称并测试发现仍然存在上面的问题。
  
  最后恢复325的名称,目前仅归档326不可见,而这个归档是一个空归档,看看BLOCKRECOVER是否可以跳过空归档进行恢复。
  
  RMAN>blockrecoverdatafile5block27;
  
  启动blockrecover于17-6月-07
  
  使用通道ORA_DISK_1
  
  通道ORA_DISK_1:正在恢复块
  
  通道ORA_DISK_1:正在指定要从备份集恢复的块
  
  正在恢复数据文件00005的块
  
  通道ORA_DISK_1:已从备份段1恢复块
  
  段handle=F:ORACLEORACLE920DATABASEHIKFE30_1_1tag=TAG20070617T020728param
  
  s=NULL
  
  通道ORA_DISK_1:块恢复已完成
  
  正在开始介质的恢复
  
  存档日志线程1序列327已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00327.001存在于磁盘上
  
  存档日志线程1序列328已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00328.001存在于磁盘上
  
  存档日志线程1序列329已作为文件F:ORACLEORADATATEST1ARCHIVELOGARC00329.001存在于磁盘上
  
  RMAN-00571:===========================================================
  
  RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
  
  RMAN-00571:===========================================================
  
  RMAN-03002:failureofblockrecovercommandat06/17/200702:41:16
  
  RMAN-06053:unabletoperformmediarecoverybecauseofmissinglog
  
  RMAN-06025:nobackupoflogthread1seq326scn58749837foundtorestore
  
  错误依旧,RMAN连一个空的归档都无法跳过,看来这块的文档描述和实际情况有很大的出入。
  
  从这一点也反映出归档日志的重要性,如果丢失了归档日志,不管是常规恢复还是数据库的恢复都是无法进行的。

本文"RMAN备份恢复之归档日志对BLOCKRECOVER的影响"由远航站长收集整理而来,仅供大家学习与参考使用。更多AG亚游集团尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(AG亚游集团). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类AG亚游集团.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4
叙利亚防空系统回击射向叙军用机场的多枚导弹 拼多多算不算传统电商行业真正的颠覆者? 女子扮高富帅骗279人 家里挖出266万现金装两大桶 泛珠新气象:更专注更公平的泛珠即将启程 欧洲央行在调整利率前 将先撤出非常规刺激举措 足协杯-陈涛助攻申花旧将传射 四川3-0晋级战苏宁 鹦鹉案当事人出狱:因为几只鹦鹉坐牢非常不值 “通俄门”持续发酵:特朗普质疑特别检察官米勒 醒醒!一场屠杀让大连正视自己 足球城复兴急不得 雷军辞去猎豹移动董事长 CEO傅盛继任 北京16区与内蒙古这些旗县结对奔小康 美直升机在日本熊本机场紧急着陆 美军致歉
阿根廷申请IMF以“超额获得”备用安排形式提供融资 醉汉执意换穿过的鞋 顾客劝阻被群殴2小时后身亡 腾讯领投印度音乐公司Gaana 完善全球化业务矩阵 政协委员谈严惩“精日”:蹭外长热点只是巧合 侯友宜战新北绿营慌了 蔡英文忙出手却给自己挖坑 Google-CH项目启动 搜索将会过滤关键字 古巴坠机事故已确认110人遇难 一只黑匣子被找到 机构预期美元维持强势 沈琼:主力二传詹国俊带伤出战 临时变阵取效果 杜特尔特:联合国人权小组应该被送去喂鳄鱼 中国扩大开放新举措与中美贸易战有关?外交部回应 英皇证券:中美暂不贸易战 中国生物制药寻顶未完
大陆这两天打了两场“胜仗” 台湾当局坐不住了 快递男孩妥善安置 王青伟:应担负更多社会责任 杨洁篪国务委员下周将访问韩国?中方回应 中超-陈志钊破僵扎哈维任意球定胜 富力2-0一方 Uber用程序追踪Lyft司机 集体诉讼多数主张被驳回 7冠恒大若踢五人制战力如何 顶级中轴线造5星之师 2018羽毛球世锦赛混双签表:雅思组合坐镇上半区 爱奇艺递交IPO申请:拟融资15亿美元 赴纳斯达克上市 环保部:国家设大气污染防治专项资金 投入逾600亿 微信赚钱的三大方法 怎么赚钱快 现实点的 微信赚钱的三大方法 投资小型加工厂 AG亚游集团