如何使用备份的控制文件做完全恢复



 使用备份控制文件做完全恢复前提:


1)使用之前备份的控制文件,对从当前控制文件还原的数据文件的做完全恢复。

2)完全恢复需要用到控制文件中记录的online redo logcurrent    redo log的信息 (archive log + currentonline redo log)

【归档模式】


环境介绍

1).有一个之前备份的控制文件

2).当前备份已经还原,备份后有新的事物操作。

SYS@ TestDB12>select sequence#, status, group# from v$LOG ;

 SEQUENCE# STATUS               GROUP#

---------- ---------------- ----------

        43 CURRENT                  1

        41 INACTIVE                  2

        42 INACTIVE                  3

SYS@ TestDB12>create table EMP as select * from SCOTT.EMP ;

Table created.

完全恢复后能查看到EMP表。


1、使用当前的控制文件从备份还原数据文件

SYS@ TestDB12>startup mount ;

RMAN> restore database ;

或者控制文件损坏了,当前数据库无法做恢复,此时使用旧的控制文件做恢复。


2、还原旧的控制文件

SYS@ TestDB12>startup nomount ;

SYS@ TestDB12>show parameter control_files;

NAME       TYPE      VALUE

-------------------------- ------------------------------

control_files   string      /u01/app/oracle/oradata/TestDB12/control01.ctl,

                        /u01/app/oracle/fast_recovery_area/TestDB12/control02.ctl

[oracle@rh55 ~] $cp /u02/db12.ctl /u01/app/oracle/oradata/TestDB12/control01.ctl

[oracle@rh55 ~] $cp /u02/db12.ctl /u01/app/oracle/fast_recovery_area/TestDB12/control02.ctl


3、MOUTdatabase

SYS@ TestDB12>alter database mount ;

Database altered.


4、数据库recover,恢复时不以控制文件记录信息为主

SYS@ TestDB12>recover database using backup controlfile ;

有报错,原因是旧的控制文件中没有当前库的current online redo log

ORA-00308: cannot open archived log '/oracle/arch/1_43_844840244.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3


开库:不能打开数据库,除非不完全恢复RESETLOGS.

想要完全恢复,就要应用上current redo信息,当前已经应用所有的归档信息。

旧的控制文件中没有当前online redo的记录,只能通过重建控制文件,重新扫描数据库,

自动添加当前online redo 到控制文件中。


SYS@ TestDB12>select group#, sequence#, status from v$log ;

    GROUP#  SEQUENCE# STATUS

---------- ---------- ----------------

         1         28 ACTIVE

         3         30 CURRENT

         2         29 ACTIVE


5、重建控制文件

1)      导出控制文件重建脚本:

SYS@ TestDB12>alter database backup controlfile to trace ;

Database altered.

2)根据时间找SID_ora_*.trc文件,里面有两个控制文件的重建脚本RESETLOGSNORESETLOGS

SYS@ TestDB12>show parameter user_dump

NAME         TYPE        VALUE

---------------------------- ------------------------------------------------------------------------

user_dump_dest  string      /u01/app/oracle/diag/rdbms/testdb12/TestDB12/trace


11G环境可以使用v$diag_info视图查找当前trace文件:

select value from v$diag_info where name='Default Trace File' ;


将标示为NORESETLOGS的重建控制文件脚本拷贝出来。 

3)重建控制文件

SYS@ TestDB12>startup nomount force ;

SYS@ TestDB12>

CREATE CONTROLFILE REUSE DATABASE "TESTDB12" NORESETLOGS  ARCHIVELOG

        MAXLOGFILES 16

         MAXLOGMEMBERS 3

        MAXDATAFILES 100

         MAXINSTANCES 8

         MAXLOGHISTORY 292

     LOGFILE

     GROUP 1 '/u01/app/oracle/oradata/TestDB12/redo01.log'  SIZE 50M BLOCKSIZE 512,

     GROUP 2 '/u01/app/oracle/oradata/TestDB12/redo02.log'  SIZE 50M BLOCKSIZE 512,

    GROUP 3 '/u01/app/oracle/oradata/TestDB12/redo03.log'  SIZE 50M BLOCKSIZE 512

   -- STANDBY LOGFILE

   DATAFILE

     '/oracle/oradata/system01.dbf',

     '/oracle/oradata/sysaux01.dbf',

     '/oracle/oradata/undotbs01.dbf',

     '/oracle/oradata/users01.dbf',

     '/oracle/oradata/example01.dbf',

     '/oracle/oradata/undotbs02.dbf',

     '/oracle/oradata/fsh_arch01.dbf'

   CHARACTER SET AL32UTF8

   ;

 

Control file created.


6、数据库mount

SYS@ TestDB12>select status from v$instance ;

STATUS

------------

MOUNTED


7、控制文件能够识别数据库的current online redo

SYS@ TestDB12>select group#, status, sequence# from v$log ;

    GROUP# STATUS            SEQUENCE#

---------- ---------------- ----------

         1 CURRENT                 43

         3 INACTIVE                 42

         2 INACTIVE                 41


8、恢复数据库

SYS@ TestDB12>recover database ;

Media recovery complete.


9、正常打开数据库,并验证已经完全恢复

SYS@ TestDB12>alter database open ;

Database altered.

SYS@ TestDB12>select count(*) from emp ;

COUNT(*)

-------------

       14                   


要点就是重建控制文件,识别到 current online log ,这对做完全恢复至关重要。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值