对数据库恢复的理解

原创
2016-06-07 15:24:00 992浏览

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 如果我们指定以alter database open resetlogs打开数据库,那么我们当前online line日志的sequence number会归为1,并且之前的日志信息都会被抛弃。 以下条件需要使用resetlog 1)在不完全恢复(介质

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  如果我们指定以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

  1)system checkpoint scn = datafile checkpoint 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

  1)system checkpoint scn

  2)stopscn is not null 不需要实例恢复,而且因为SCN已经为redolog scn,log已经不能使用,必须用resetlogs方式打开数据库

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。