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