小记基于控制文件的scn不完全恢复

问题现象:
  1. SQL> alter database open resetlogs;
  2. alter database open resetlogs
  3. *
  4. ERROR at line 1:
  5. ORA-01152: file 1 was not restored from a sufficiently old backup
  6. ORA-01110: data file 1: '/DBSoft/oracle/oradata/woo/system01.dbf'

日志中报错:
  1. alter database open
  2. Errors in file /DBSoft/oracle/diag/rdbms/woo/woo/trace/woo_ora_24956.trc:
  3. ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
  4. ORA-1589 signalled during: alter database open...
  5. Sun Dec 24 05:44:45 2017
  6. Signalling error 1152 for datafile
  7. Signalling error 1152 for datafile
  8. Signalling error 1152 for datafile
  9. Signalling error 1152 for datafile
  10. Signalling error 1152 for datafile
  11. Checker run found 5 new persistent data failures
  12. Sun Dec 24 05:44:51 2017
  13. alter database open resetlogs
  14. Signalling error 1152 for datafile
  15. ORA-1152 signalled during: alter database open resetlogs...

问题分析:
做完recover database正要起库,发现data file 1需要恢复,那么这个时候就应该要想到需要做不完全恢复了。那么不完全恢复自然有四种,基于时间(time)恢复
  基于取消(cancel)恢复
  基于SCN(change)恢复
  基于备份控制文件(unsing backup controlfile)的恢复,那么接下来我们需要了解下,用那种方式最合适了。

查看scn信息:
查看数据文件头部的scn信息:
  1. SQL> select checkpoint_change# from v$datafile_header;

  2. CHECKPOINT_CHANGE#
  3. ------------------
  4.      2247792
  5.      2247792
  6.      2247792
  7.      2247792
  8.      2247792

查看控制文件中记录的scn头部信息:

  1. SQL> select checkpoint_change# from v$datafile;

  2. CHECKPOINT_CHANGE#
  3. ------------------
  4.      2247974
  5.      2247974
  6.      2247974
  7.      2247974
  8.      2247974

       在这里我们可以很清楚的看到控制文件中记录的scn信息比数据文件头部记录的scn信息更新,且所有数据文件头部信息是一致的,由此可以快速得出,我们将数据库恢复到数据文件的scn这样数据库就可以打开了。

做基于文件头部的scn恢复:

  1. SQL> recover database until change 2247792;
  2. ORA-00283: recovery session canceled due to errors
  3. ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

        提示需要使用控制文件来做基于scn的恢复。

使用控制文件来做基于scn的恢复:
  1. SQL> recover database until change 2247792 using backup controlfile;
  2. Media recovery complete.
  SQL> select * from v$recover_file


     FILE# ONLINE  ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ---------- ---------- ------------------
1 ONLINE  ONLINE 2247792 23-DEC-17
2 ONLINE  ONLINE 2247792 23-DEC-17
3 ONLINE  ONLINE 2247792 23-DEC-17
4 ONLINE  ONLINE 2247792 23-DEC-17
5 ONLINE  ONLINE 2247792 23-DEC-17


恢复完成之后,执行open resetlogs:
  1. SQL> alter database open resetlogs;

  2. Database altered.
检查:
  1. SQL> col error format a10;
  2. SQL> select * from v$recover_file;

  3. no rows selected

  4. SQL> select checkpoint_change# from v$datafile_header;

  5. CHECKPOINT_CHANGE#
  6. ------------------
  7.      2247797
  8.      2247797
  9.      2247797
  10.      2247797
  11.      2247797

  12. SQL> select checkpoint_change# from v$datafile;

  13. CHECKPOINT_CHANGE#
  14. ------------------
  15.      2247797
  16.      2247797
  17.      2247797
  18.      2247797
  19.      2247797
总结:必须保证数据文件头部的scn和控制文件中的scn信息保持一致,数据库才能打开,那么正常恢复将遵循就近,就小来恢复。










来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20674423/viewspace-2149165/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20674423/viewspace-2149165/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值