理解 using backup controlfile

               

        using backup controlfile 通常用于恢复由于当前控制文件丢失且原来备份的控制文件较当前发生变化的情形之下。using backup controlfile
的 recover 方式一旦使用之后,常用的recover database命令将不可再使用,且必须要使用resetlogs方式来打开数据库,下面是具体的演示描述。

 

一、演示 using backup controlfile 时的相关变化

-->查看数据库SYBO2SZ控制文件的时间信息sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/controlf/total 29M-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl3SYBO2SZ.ctl-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl2SYBO2SZ.ctl-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl1SYBO2SZ.ctl-->查看系统时间sys@SYBO2SZ> ho dateMon Sep 10 12:00:09 CST 2012-->查看数据库SYBO2SZ的状态,此时数据库处于关闭状态sys@SYBO2SZ> ho ps -ef | grep pmon_SYBO2SZoracle     440 32067  0 12:01 pts/4    00:00:00 /bin/bash -c ps -ef | grep pmon_SYBO2SZoracle     442   440  0 12:01 pts/4    00:00:00 grep pmon_SYBO2SZsys@SYBO2SZ> startup mount;ORACLE instance started.Total System Global Area  599785472 bytesFixed Size                  2074568 bytesVariable Size             381683768 bytesDatabase Buffers          209715200 bytesRedo Buffers                6311936 bytesDatabase mounted.-->当mount数据库后,控制文件的状态及时间信息被更新sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/controlf/total 29M-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl3SYBO2SZ.ctl-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl2SYBO2SZ.ctl-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl1SYBO2SZ.ctlsys@SYBO2SZ> select instance_name,status,database_status from v$instance;INSTANCE_NAME    STATUS       DATABASE_STATUS---------------- ------------ -----------------SYBO2SZ          MOUNTED      ACTIVE-->此时数据库文件的时间并没有被更新,依旧为11:23sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/oradata/sys*-rw-r----- 1 oracle oinstall 501M 2012-09-10 11:23 /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf-rw-r----- 1 oracle oinstall 301M 2012-09-10 11:23 /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbfsys@SYBO2SZ> alter session set nls_date_format='yyyymmdd hh24:mi:ss';-->Author : Robinson Cheng  -->Blog: http://blog.csdn.net/robinson_0612-->也可以看到此时controlfile_type为current,open_resetlogs为NOT ALLOWEDsys@SYBO2SZ> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs                    2   FROM v$database;CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL------- --------------------- ------------------- ----------------- -----------CURRENT                  6012             1151639 20120910 04:30:14 NOT ALLOWED-->使用带using backup controlfile的recover 命令,出现Specify log提示-->此时再开另一个session连接到实例,下面以idle开头的sql提示符即为另一个sessionsys@SYBO2SZ> recover database using backup controlfile;ORA-00279: change 1160803 generated at 09/10/2012 11:23:59 needed for thread 1ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arcORA-00280: change 1160803 for thread 1 is in sequence #3Specify log: {<RET>=suggested | filename | AUTO | CANCEL}cancelMedia recovery cancelled.    -->session2 的操作 idle> conn / as sysdba Connected. idle> alter session set nls_date_format='yyyymmdd hh24:mi:ss';   Session altered.   -->下面的查询在使用recover database using backup controlfile后此时controlfile_type为BACKUP -->且open_resetlogs为REQUIRED,相应的sequence以及change#全部发生了变化 idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs    2  FROM v$database;   CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL ------- --------------------- ------------------- ----------------- ----------- BACKUP                   6014             1160803 20120910 11:23:59 REQUIRED-->上面的查询完成后,输入cancel,提示Media recovery cancelled-->尝试使用open方式打开数据库,提示必须使用RESETLOGS or NORESETLOGS选项sys@SYBO2SZ> alter database open;alter database open*ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database open-->使用resetlogs选项打开数据库,注意,此时如果使用noresetlogs选项,会重复出现上述提示-->此时提示file1需要介质恢复sys@SYBO2SZ> alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-01113: file 1 needs media recoveryORA-01110: data file 1: '/u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf'-->根据recover的提示,查看arch_793474012_1_3.arc文件,此时文件并不存在sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arcls: /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arc: No such file or directory-->再次尝试恢复,依然提示需要arch_793474012_1_3.arc归档日志,此时在session2中查看状态信息sys@SYBO2SZ> recover database using backup controlfile;ORA-00279: change 1160803 generated at 09/10/2012 11:23:59 needed for thread 1ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arcORA-00280: change 1160803 for thread 1 is in sequence #3-->将组3的联机日志路径复制到Specify log处实现完全恢复Specify log: {<RET>=suggested | filename | AUTO | CANCEL}/u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.logLog applied.Media recovery complete. -->session2 -->可以看到控制文件的sequence#发生了几次变化 idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs   2  FROM v$database;   CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL ------- --------------------- ------------------- ----------------- ----------- BACKUP                   6014             1160803 20120910 11:23:59 REQUIRED   idle> /   CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL ------- --------------------- ------------------- ----------------- ----------- BACKUP                   6015             1160803 20120910 11:23:59 REQUIRED   -->查看当前联机日志信息 idle> select * from v$logfile;     GROUP# STATUS  TYPE    MEMBER                                                  IS_ ---------- ------- ------- ------------------------------------------------------- ---          3         ONLINE  /u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.log          NO          3         ONLINE  /u02/database/SYBO2SZ/redolog/log3bSYBO2SZ.log          NO          4         ONLINE  /u02/database/SYBO2SZ/redolog/log4aSYBO2SZ.log          NO          4         ONLINE  /u02/database/SYBO2SZ/redolog/log4bSYBO2SZ.log          NO   -->此时日志组3为current状态,因此将组3的联机日志路径复制到Specify log处实现完全恢复 idle> select * from v$log;       GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -----------------          4          1          2   20971520          2 YES INACTIVE               1124329 20120909 09:00:49          3          1          3   20971520          2 NO  CURRENT                1150957 20120910 04:00:06-->完全恢复成功后,使用open方式依旧不成功  sys@SYBO2SZ> alter database open;alter database open*ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database open-->使用open resetlogs方式成功打开数据库sys@SYBO2SZ> alter database open resetlogs;Database altered.    -->session 2    -->此时session 2中controlfile_type已经被置为CURRENT,open_resetlogs方式也被置为NOT ALLOWED idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs   2  FROM v$database;   CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL ------- --------------------- ------------------- ----------------- ----------- CURRENT                  6073             1160878 20120910 12:09:58 NOT ALLOWED-->查看数据文件的时间信息,此时已被更新到最新状态  sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/oradata/sys*-rw-r----- 1 oracle oinstall 501M 2012-09-10 12:09 /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf-rw-r----- 1 oracle oinstall 301M 2012-09-10 12:09 /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbfsys@SYBO2SZ> ho dateMon Sep 10 12:10:42 CST 2012-->相应的新的incarnation已经产生sys@SYBO2SZ> archive log list;      Database log mode              Archive ModeAutomatic archival             EnabledArchive destination            /u02/database/SYBO2SZ/archive/Oldest online log sequence     1Next log sequence to archive   1Current log sequence           1


二、总结
1、using backup controlfile用于恢复备份的控制文件与当前的控制文件不一致的情形
2、一旦使用了using backup controlfile方式,控制文件的类型将由 current 转移到 backup 类型,同时open_resetlogs为required
3、一旦使用了using backup controlfile方式,后续再次使用recover database将变得无效
4、必须要使用 resetlogs 方式打开数据库,即使我们做的是完全恢复
5、注意理解演示中时间状态的更新情况。实际上来说是实例的启动过程,即:
    nomount:    根据pfile 或 spfile 启动相关后台进程,分配SGA
    mount:         打开控制文件,检查控制文件状态一致性,将数据库与实例关联起来
    open:            根据控制文件中记录的数据文件日志文件对其进行逐一检查无误后,整个数据库置于open状态

 

三、更多参考

有关基于用户管理的备份和备份恢复的概念请参考

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理(详细描述了介质恢复及其处理)

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

   Oracle 基于备份控制文件的恢复(unsing backup controlfile)

 

有关RMAN的备份恢复与管理请参考

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份路径困惑(使用plus archivelog时)

 

有关ORACLE体系结构请参考

    Oracle 表空间与数据文件

    Oracle 密码文件

    Oracle 参数文件

    Oracle 联机重做日志文件(ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 归档日志

    Oracle 回滚(ROLLBACK)和撤销(UNDO)

    Oracle 数据库实例启动关闭过程

    Oracle 10g SGA 的自动化管理

    Oracle 实例和Oracle数据库(Oracle体系结构)

 

 

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值