过着简单,真实的生活,喜欢收藏变形金刚(TFE,G1,SL系列),研究金融股市,KOF98,篮球,学习研究Oracle技术,我并不是一个全职的Oracle DBA,但是对于Oracle技术的热爱和研究,是一个不争的事实,愿意结交广大Oracle技术爱好者!MSN:oracle_kof_tf@hotmail.com

对于Database recovery的理解

上一篇 / 下一篇  2007-12-17 16:10:01 / 个人分类:Oracle数据库技术-Backup&Recovery

如果我们指定以alter database open resetlogs打开数据库,那么我们当前online line日志的sequence number会归为1,并且之前的日志信息都会被抛弃。

以下条件需要使用resetlog
1)在不完全恢复(介质恢复)
2)使用备份控制文件(backup的控制文件一般从日志文件和数据库的信息以及SCN的信息,相比目前的状态都已经过期了)

使用resetlogs打开数据库(log sequence number变为1)后无必完整地备份一次数据库。而且这一操作会抛弃所有在上一次恢复没有用到的日志信息,确保不被重新用与恢复。

在重建控制文件的时候需要注意:
create controlfile resetlogs/noresetlogs
1).用noresetlogs重建控制文件时,控制文件中 datafile checkpoint scn来自online logs中的Current log头
2).用resetlogs重建控制文件时,控制文件中datafile Checkpoint SCN来自各数据文件头(Start SCN)。

如果system checkpoint scn,datafile checkpoint scn,start scn 不全相等,需要介质恢复.
如果stopscn null需要实例恢复


小小的总结一下各种情况:

1、系统正常关闭:
会使得:system checkpoint scn = datafile checkpoint scn = start scn = stop scn
1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介质恢复
2)stop scn is not null = start SCN,不需要实例恢复

2、系统异常关闭:
会使得:system checkpoint scn = datafile checkpoint scn = start scn = stop scn
1)system checkpoint scn = datafile checkpoint scn = start scn,不需要介质恢复
2)stop scn is null,需要实例恢复

3、旧数据文件
会使得:system checkpoint scn = datafile checkpoint scn > start scn,stop scn is null/ is not null
1)system checkpoint scn = datafile checkpoint scn > start scn
需要介质恢复成system checkpoint scn = datafile checkpoint scn = start scn
2)stop scn is null,需要实例恢复,is not null 不需要实例恢复

4、备份控制文件
会使得:system checkpoint scn = datafile checkpoint scn <= start scn(当数据文件为旧且和旧控制文件为同一版本的时候相等,如果数据文件是当前的数据文件则是小于),stop scn notnull/null
1)system checkpoint scn = datafile checkpoint scn <= start scn,需要使用using backup controlfile介质恢复成system scn = datafile scn = start scn = current log scn(当前日志最大SCN)
2)为保证上一次恢复没有用到log日志不被使用,必须在恢复完成后用resetlogs打开数据库

5、以noresetlogs方式重建控制文件
在以这种方式重建控制文件时,控制文件中的datafile checkpoint scn来自于Online logs中的Current log头,因此
current log scn = system checkpoint scn = datafile scn >= start scn(如果数据文件为备份而来则会大于start SCN,如果是当前的则为相等于start SCN), stop scn not null/null
1)current log scn = system checkpoint scn = datafile checkpoint scn >= start scn,因此需要介质恢复成system checkpoint scn = datafile scn = start scn = redolog scn(当前日志最大SCN)
2)stopscn is not null 不需要实例恢复

6、以resetlogs方式重建控制文件
控制文件中datafile checkpoint scn 来自各数据文件头(start scn),而且system checkpoint scn会归为0
system checkpoint scn <  datafile checkpoint scn = start scn,stop scn not null/null

1)system checkpoint scn < datafile checkpoint scn = start scn,需要使用using backup controlfile介质恢复成system checkpoint scn = datafile checkpoint scn = start scn(当前日志最大SCN),stop scn not null
2)stopscn is not null 不需要实例恢复,而且因为SCN已经为redolog scn,log已经不能使用,必须用resetlogs方式打开数据库


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar