zoukankan      html  css  js  c++  java
  • recover database和recover database using backup controlfile的区别

    recover database :

           在普通的recover database 或者 recover tablespace, recover datafile时,Oracle会以当前controlfile所纪录的SCN为准,利用archive log和redo log的redo entry,把相关的datafile 的block恢复到“当前controlfile所纪录的SCN”。

    recover database using backup controlfile:

            Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说:control file是backup controlfile,或者controlfile是根据trace create的。),这时候,就需要用using backup controlfile。 恢复就不会受“当前controlfile所纪录的SCN”的限制。只是想告诉数据库,我这个controlfile 是旧的,这个时候数据库就会不断应用归档日志,它也不知道哪一个是最后的归档和当前日志,需要限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel)。

    =========================================================

    首先这里我们先介绍四个SCN概念。
    1、系统检查点scn
    当一个检查点动作完成后,Oracle就把系统检查点的SCN存储到控制文件中。
    select checkpoint_change# from v$database;
    2,数据文件检查点scn
    当一个检查点动作完成后,Oracle就把每个数据文件的scn单独存放在控制文件中。
    select name,checkpoint_change# from v$datafile;
    3,启动scn
    Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,
    检查是否需要执行数据库恢复。
    select name,checkpoint_change# from v$datafile_header
    4、终止scn
    每个数据文件的终止scn都存储在控制文件中。
    select name,last_change# from v$datafile

    以下条件需要使用using backup controlfile
    1)、使用备份控制文件
    2)、重建resetlogs控制文件,如果重建立noresetlogs不必要使用using backup controlfile


    2、alter database open resetlog
    指定RESETLOGS将重设当前LOG sequence number为1,抛弃所有日志信息。
    以下条件需要使用resetlog
    1)在不完全恢复(介质恢复)
    2)使用备份控制文件
    使用resetlogs打开数据库后务必完整地备份一次数据库。
    3、create controlfile resetlogs/noresetlogs
    1).用Noresetlogs重建控制文件时,控制文件中 datafile Checkpoint来自Online logs中的Current log头
    2).用Resetlogs重建控制文件时,控制文件中datafile Checkpoint来自各数据文件头。

    当system scn,datafile scn,start scn 不全相等,需要介质恢复,如果stopscn null需要实例恢复
    resetlogs抛弃所有在上一次恢复没有用到的日志信息,确保不被重新用与恢复。
    1、系统正常关闭:
    system scn=datafile scn=start scn=stop scn
    1)system scn=datafile scn=start scn,不需要介质恢复
    2)stopscn not null,不需要实例恢复
    2、系统异常关闭:
    system scn=datafile scn=start scn,stop scn null
    1)system scn=datafile scn=start scn,不需要介质恢复
    2)stopscn null,需要实例恢复
    3、旧数据文件
    system scn=datafile scn>start scn,stop scn null/notnull
    1)system scn=datafile scn>start scn,需要介质恢复成system scn=datafile scn=start scn
    2)stopscn null,需要实例恢复,not null 不需要实例恢复
    4、备份控制文件
    system scn=datafile scn<=start scn(当数据文件为旧的相等),stop scn notnull/null
    1)system scn=datafile scn<=start scn,需要使用using backup controlfile介质恢复成system scn=datafile scn=start scn=current log scn(当前日志最大SCN)
    2)为保证上一次恢复没有用到log日志不被使用,必须resetlogs
    5、重建noresetlogs控制文件
    控制文件中 datafile Checkpoint来自Online logs中的Current log头
    current log scn=system scn=datafile scn>=start scn,stop scn not null/null
    1)current log scn=system scn=datafile scn>=start scn,需要介质恢复成system scn=datafile scn=start scn=redolog scn(当前日志最大SCN),stop scn not null
    2)stopscn not null 不需要实例恢复
    6、重建resetlogs控制文件
    控制文件中datafile Checkpoint来自各数据文件头。
    system scn>=datafile scn=start scn,stop scn not null/null
    1)system scn>=datafile scn=start scn,需要使用using backup controlfile介质恢复成system scn=datafile scn=start scn(当前日志最大SCN),stop scn not null
    2)stop notnull,因为SCN已经为redolog scn,log已经不能使用,必须resetlogs 。

  • 相关阅读:
    如何更改Linux yum源?
    Vsftp设置为PASV mode(被动模式传送)
    CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
    centos6.3搭建FTP服务器图文教程
    Linux关闭/开启防火墙命令
    linux下火狐浏览器安装flash player插件
    判断网站织梦DedeCms版本的方法
    PHP获取当前url路径的函数及服务器变量
    leetcode 205 Isomorphic Strings
    leetcode 70 Climbing Stairs
  • 原文地址:https://www.cnblogs.com/datalife/p/1985396.html
Copyright © 2011-2022 走看看