Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159041
  • 博文数量: 40
  • 博客积分: 1746
  • 博客等级: 上尉
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-29 15:57
文章分类

全部博文(40)

文章存档

2011年(23)

2010年(17)

我的朋友

分类: Oracle

2011-05-18 15:01:08

当我们重建控制文件的时候,重建方式分两种(resetlogs 和 noresetlogs)

1. 使用resetlogs选项时,System Checkpoint SCN会被归为0,而其中记录的各个数据文件的Datafile Checkpoint SCN则来自于Start SCN(也就是说可能会从冷备份的数据文件的数据文件头中获取)。根据上述的描述,此时需要采用using backup controlfile做recovery。 因此情况是 System Checkpoint SCN=0 < Start SCN = Datafile Checkpoint SCN
2. 使用noresetlogs选项时,有一个前提就是:一定要有online redo log的存在。否则就要使用resetlogs选项。这个时候控制文件重建好时,其system checkpoint SCN=Datafile Checkpoint SCN=Lastest Checkpoint SCN in online redo log,我们可以看到Datafile Checkpoint SCN并没有从Start SCN中读取。而是读取了最新的日志文件中的SCN作为自己的数据。此时重建的控制文件在恢复中的作用跟最新的控制文件类似,System Checkpoint SCN(已经读取最新的redo log的checkpoint SCN信息)可能会>Start SCN (因为数据文件可能会从冷备份中恢复),恢复时就不需要加using backup controlfile子句了。


关于backup controlfile的补充

backup controlfile只有备份时刻的archive log信息,并没有DB crash时刻的archive log信息,所以并不会自动应用online redo log,而是提示找不到序号为Lastest Archive log sequence + 1 的archive log。尽管你可以手动指定online redo log来实现完全恢复,但因为一旦使用了using backup controlfile子句,Oracle就视为不完全恢复,必须open resetlogs! 实际上,假如你有旧的控制文件又不想resetlogs,那很简单,使用旧的控制文件mount然后 backup to trace ,然后手工创建控制文件,使用 reuse database ... noresetlogs 。这样就可以 recover database 自动恢复并open database 而不用 resetlogs 了。
阅读(921) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~