您当前的位置: 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亚游集团,  生日会最后,李易峰的新书《1987了》也发布了宣传片,黑白基调的片子很有质感,内容更是体现了其成名十年,一路走来的心理历程。书中,李易峰描述了很多从未公开过的一些想法,他也希望未来之路,能够走得越来越好。

  我其实偶像挺多的,我觉得亚洲文化的特点,大家到了中年以后就开始假装自己谁也不佩服了,然后如果别人追星,他就觉得还是喜欢指责别人幼稚,我觉得这个挺奇怪的。你看乔布斯五十多岁,见到鲍勃-迪伦激动得说不出话来,这非常正常。我第一次看到崔健就激动得说不出话来。投资两万的小型加工厂  袁世凯回国后,向李鸿章汇报了朝鲜的紧迫情形。李鸿章意识到形势紧迫,而且军事布置很不利,于是紧急调度——可是天津电报局的电报生受日本间谍收,将发兵日期泄露。7月23日,爱仁、飞鲸先后运兵抵牙山登陆。25日早上,日本多艘军舰集于牙山口外,拦劫中国兵船。7点50分,日本联合舰队在丰岛海域和清国舰队遭遇,发生战斗。日本驻留朝鲜的混成旅团也开始向牙山进攻。

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
路透社:代理顾问公司向特斯拉开火 要求撤换2名董事 神吐槽:詹姆斯学校全免费!咦?没有无线网? 大奖赛火箭四杆破百进四强 马奎尔5-2胜墨菲 投服中心四问国中水务重组 经营风险是否考量充分 卸任央行行长21天后 70岁周小川又有新职务 5-12地震十年记忆:淡忘该淡忘的 记住该记住的 斗鱼回应主播调侃南京大屠杀言论并致歉 将整改内容 赵红任上海金融法院院长 汪彤任上海海事法院院长 耶鲁黑人女生在宿舍楼公共区打盹惊动警方 41+7+4!是詹姆斯就都得体会英雄似的孤独吗? 蓬佩奥重申对伊制裁:11月4号前将其石油出口降零 与中国驻吉布提保障基地紧挨着的港口被吉方收回
政府工作报告透露:这些领域迎来创业黄金时代 双枪56分奇才主场大胜 德罗赞23分猛龙遭惨败 欧盟新数据保护法将实施 谷歌、Facebook已修改政… 591万大奖被弃!站主:毫无印象监控也没了 北京吉祥寺桥附近一直升机坠落 机身机尾分离(图) 科研团队再招“大姨妈”捐献者:宫血干细胞用处大 B站美股IPO引90后狂欢 视频转折风口欲解赚钱难题 经济萧条政治陷僵局 150万意大利人选择逃离 虽然收购高通失败 但博通的收购扩张策略不会变 飞虎队将军陈纳德遗孀陈香梅过世 享寿94岁 北京气温创今年新高 未来三天多阵性降水闷热持续 牛津大学教授:如何把控人工智能
中国女排弱旅身上得到锻炼 郎平耐心指导孟子璇 环法17赛段南美车手夺冠 托马斯黄衫弗鲁姆跌到第3 中甲北控官宣郭维维任俱乐部总经理 杨俊生卸任 鲁能被评近些年一直有个问题 重庆已不是弱旅 担忧美5G标准制定优势下降 特朗普叫停博通收购高通 女出纳挪千万公款打赏女主播被捕 主播曾还300万 印度古吉拉特邦发生交通事故19人死亡 海军参谋长张文旦晋升海军中将 14人晋升海军少将 十二届全国人大代表五年提出建议4万余件 卖什么利润大不压货 加盟店排行榜 在家可开啥小型加工厂 女生最值得学的手艺 AG亚游集团