www.Orasql.Com
 
用户名: 密码:  验证码: 注册|找回密码 oracleawen's blog  
 
         当前位置 >> 技术论坛  发表帖子     论坛版块     查找帖子
不完全恢复遭遇ora-01152的理解,欢迎拍砖-技术论坛||Oracle高手之路—Orasql.Com!
            不完全恢复遭遇ora-01152的理解,欢迎拍砖
 
发贴人:oracle_awen
oracleawen@gmail.com448315233127.0.0.1
用户级别:管理员
发贴总数:1245
注册时间:2011-05-05 09:23:03
2011-06-01 08:15:45
不完全恢复遭遇ora-01152的理解,欢迎拍砖 最近做生产环境的异机恢复演练,用nbu做的备份,偶尔会报ora-1152错误, restore database 成功 recover database报 ora-01152 file 1 was not restored from a sufficiently old backup ora-01110 data file 1 '/../../raw12' 。 我查了发现控制文件的scn比system表空间数据文件的scn要大。 根据网上说法,使用隐含参数试图强行打开数据库,失败,报ora-00600错误。为此,希望各位兄弟不要抱有侥幸心理,数据真要恢复的话这可是要命的。 首先,说说我对这个错误发生的理解。从nbu的备份脚本说起。 run { allocate channel ch00 type 'sbt_tape'; allocate channel ch01 type 'sbt_tape'; backup $backup_type skip inaccessible tag hot_db_bk_level0 filesperset 5 # recommended format format 'bk_%s_%p_%t' database; sql 'alter system archive log current'; release channel ch00; release channel ch01; # backup all archive logs allocate channel ch00 type 'sbt_tape'; allocate channel ch01 type 'sbt_tape'; backup filesperset 20 format 'al_%s_%p_%t' archivelog all delete input; release channel ch00; release channel ch01;} allocate channel ch00 type 'sbt_tape'; backup # recommended format format 'cntrl_%s_%p_%t' current controlfile; release channel ch00; } 红色标注,备份步骤很清楚 1数据文件 2切换一次日志 3备份归档 4最后备份控制文件。 在大多数测试环境,这样的备份恢复不会有问题。因为,步骤2完成后,备份归档,首先测试库可能很小,归档日志不是很多(备份较快)。其次,在备份归档的时候,未必发生日志组写满,自动切换的情况。这样,控制文件、数据文件、以及日志文件,可以确定是干净的一致的。 而在这次做的备份,可能很不巧,在步骤三的时候,耗时比较长(一天的生产数据,日志量较大),备份期间,可能一个日志文件写满,自动发生了切换,但是并没有被归档。而此时归档的日志正好备份完毕,rman直接接着备份控制文件。造成我recover动作完不成,且不能resetlogs打开。(此处我的理解比较含糊,不知是否正确,请思路清楚的兄弟指点,呵呵) 我采用备份步骤 先做一个alter system checkpoint,做完全检查点,确保所有日志被应用到数据文件。 1 backup database; 2切换一次日志; 3备份归档日志并删除已备份的日志(大库可能比较耗时)。 4再切换一次日志,并备份那一个归档日志; 5备份控制文件;

      
 
  
 Orasql.Com|E-Mail:oracleawen@gmail.com|Phone:15271942915|Copyright © 2011|All Rights Reserved|