浅析对数据库恢复


 如果我们指定以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方式打开数据库

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3