ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【备份与恢复】控制文件的恢复(不完全恢复)

【备份与恢复】控制文件的恢复(不完全恢复)

原创 Linux操作系统 作者:ljm0211 时间:2012-06-25 15:36:29 0 删除 编辑
出现情况:
       控制文件受损,实例会立即终止。尝试启动,只能启动到nomount模式中。
解决方法:
创建新的控制文件:

       日常维护中,只要修改了数据库的物理结构,那么就使用如下命令生成一个CREATE CONTROLFILE跟踪,同时将跟踪文件放在安全的位置。随后,我们可以创建一个能够与任何还原版本的数据库一起使用的控制文件。
SQL> alter database backup controlfile to trace;

使用用户托管的备份还原控制文件:
       使用用户托管的备份来备份控制文件时,要么必须关闭数据库,要么必须使用如下所示的命令:
SQL> alter database backup controlfile to '';
       为了还原控制文件的一个备份,就需要将这个备份复制至实例参数CONTROL_FILES所指定的位置,并且使用STARTUP MOUNT命令在加载模式中启动数据库,随后还需要执行下面的命令:
SQL> recover database until cancel using backup controlfile;
       此时会提示输入某些归档日志,并且在恢复失败之前会应用这些归档日志。恢复失败的原因是由于被提示输入一个并不存在的归档日志:这是当前联机日志的序列号,并且尚未被归档。此时,我们必须输入当前联机日志组某个成员的名称。如果不知道当前的联机日志组,那么可以依次尝试每个组的成员,最终就可以得到一个正确的名称,同时恢复也将完成。随后,我们能够在不丢失任何数据的情况下使用RESETLOGS命令打开数据库。虽然仍就必须创建一个新的数据库场景,但是丢失控制文件的不完全恢复语法实际上会导致一个完全恢复。
       如果被还原的数据库的结构与当前结构不同,那么进行不完全恢复时也可以使用RECOVER DATABASE UNTIL …… BACKUP CONTROLFILE语法。此时,我们必须还原控制文件以及所有数据文件。应用重做直至指定的时间点,随后可以继续正常地进行各种操作。

使用RMAN还原控制文件:
RMAN可以通过以下几种方式备份控制文件:
RMAN> backup as copy current controlfile;
RMAN> backup as backupset current controlfile;
RMAN> backup tablespace system include current controlfile;
RMAN> configure controlfile autobackup on;

       控制文件的还原问题是一个递归的问题。解决这个问题的2中方法是:首先,如果使用一个独立的恢复目录数据库,那么这个数据库具有存储仓库的一个副本。此时,RMAN能够轻易地定位控制文件备份并进行还原与备份。其次,如果没有使用回复目录数据库,那么配置的控制文件的自动备份功能就至关重要。
       即使在nomount模式中,也可以使用如下命令从控制文件自动备份中还原控制文件:
RMAN> resotre controlfile from autobackup;
       如果多个数据库共享同一个自动备份目的地(类似于多个数据库具有一个公共的闪回恢复区的情况),那么就必须提供DBID,从而使RMAN能够还原正确的控制文件。
       使用下面的命令能够找出DBID:
SQL> select dbid from v$database;
            DBID
----------------
3385973595
       随后,使用如下所示的代码块还原与恢复控制文件:
RMAN> run {
startup nomount;
set dbid 3385973595;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733743/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    437101