Oracle RMAN 还原与恢复(二)--还原控制文件

1、使用RMAN(不使用FRA)从自动备份中恢复控制文件

ORACLE 会默认地在$ORACLE_HOME/dbs 或者 $ORACLE_HOME/DATABASE 目录中创建服务器参数文件与控制文件。

假设已经还原了实例参数文件和启动了实例,还原控制文件时,一般过程是先设置ORACLE_SID 和 登陆 RMAN, 然后设置DBID, 使RMAN知道需要查找哪一个数据库的控制文件。

如果使用默认的位置来存储控制文件的自动备份,就可以简单的执行:Restore controlfile from autobackup, 这样RMAN 就可以查找包含最新控制文件的控制文件备份集。 一旦恢复了控制文件,就必须关闭重启数据库实例。如果使用的是非默认位置,就需要分配一个指向该位置的通道,然后在使用相同的方法来还原控制文件。

执行 restore controlfile from autobackup 命令时,Oracle 会在默认位置中(或者在使用allocate channel 命令定义的为位置中)查找自动的控制文件备份集。 通过DBID, RMAN 使用这个DBID在包含控制文件备份的目录中查找数据库的最新控制文件备份集。 通过应用restore 命令的maxseq 和 maxdays 参数,可以修改RMAN查找控制文件自动备份的时间周期。

使用默认设置的示例:

set oracle_sid=orcl

rman target sys/pwd

set dbid=1247395743

startup nomount;

restore controlfile from autobackup;

shutdown immediate;

 不使用默认设置的示例:

set oracle_sid=orcl

rman target sys/pwd

set dbid=1247395743

startup nomount;

run

{

set controlfile autobackup format for device type disk to 'f:/backup/%f';

allocate channel c1 device type disk;

restore spfile from autobackup;

}

shutdown immediate;

使用maxseq 和 maxdays 参数在超过默认天数(10天)的时间周期内向后查找控制文件备份集:

set oracle_sid=orcl

rman target sys/pwd

set dbid=1247395743

startup nomount;

run

{

set controlfile autobackup format for device type disk to 'f:/backup/%f';

allocate channel c1 device type disk;

restore controlfile from autobackup maxseq 200 maxdays 1000;

}

shutdown immediate;

将参数文件还原到不同的位置和文件中的示例(假定数据库正在启动和运行):

set oracle_sid=orcl

rman target sys/pwd

set dbid=1247395743

startup nomount;

restore controlfile to 'f:/backup/ctl.restore' from autobackup;

shutdown immediate;


2、使用RMAN 和 FRA 从自动备份中恢复控制文件

使用FRA恢复控制文件过程非常简单,首先确保FRA位置参数被正确设置。 然后启动实例,执行: restore controlfile from autobackup;

set oracle_sid=orcl

rman target sys/pwd

startup nomount;

restore controlfile from autobackup;

shutdown immediate;

也可以使用maxseq 和 maxdays 参数进行设置:

Restore controlfile from autobackup maxseq 200 maxdays 100;


3、恢复较早的控制文件备份

有时候,可能需要恢复一段时间以前建立的控制文件备份,因而控制文件不是来自于最新的备份(执行resetlogs 通常是这样)。 结合until time 参数,restore controlfile from autobackup 命令可以实现这一操作。 如:

Restore controlfile from autobackup until time "to_date('2010-6-27 13:25:00','yyyy-mm-dd hh24:mi:ss')";

如果要使用这个命令,就需要知道哪些控制文件备份可以用于操作。 可以使用list backup of controlfile 命令确定哪些备份控制文件可以用于还原操作。

RMAN> list backup of controlfile;

备份集列表

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

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

113     Full    16.00M     SBT_TAPE    00:00:05     18-6月 -10

       BP 关键字: 116   状态: AVAILABLE  已压缩: NO  标记: TAG20100618T085926

       句柄: 07lghd6e_1_1   介质: /,07lghd6e_1_1

 包括的控制文件: Ckp SCN: 1403939      Ckp 时间: 18-6月 -10

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

558     Full    9.52M      DISK        00:00:02     26-6月 -10

       BP 关键字: 560   状态: AVAILABLE  已压缩: NO  标记: TAG20100626T154715

段名:D:/APP/ADMINISTRATOR/FLASH_RECOVERY_AREA/ORCL/AUTOBACKUP/2010_06_26/O1_MF_S

_722706435_62CD44SN_.BKP

 包括的控制文件: Ckp SCN: 7992586      Ckp 时间: 26-6月 -10

RMAN>


4、从备份集中恢复控制文件

在Oracle 10g中,restore 有from backup 子句,使用该子句可以指示包含控制文件备份的备份集。因此只需要知道了该备份集片的名称和它的位置,就可以还原控制文件。

为了还原控制文件,首先设置数据库的实例并标识包含控制文件备份的备份集(或者进行猜测)。 接着启动RMAN,然后设置数据库的DBID。 设置完后就需要分配通道给要还原的设备,分配通道后,执行restore controlfile from 命令,就可还原控制文件并复制到不同的control_file 参数位置。

set oracle_sid=orcl

rman target sys/pwd

set dbid=1247395743

startup nomount;

run

{

allocate channel c1 device type disk;

restore controlfile from 'F:/BACKUP/ORCL_0OLGTB96_1_1.BAK';

}

shutdown immediate;


5、使用恢复目录恢复控制文件

使用恢复目录,可以简单的执行restore controlfile 命令,还原最新的控制文件,RMAN会使用恢复目录找出最新的控制文件备份,并析取这个备份以供用户使用。

Set oracle_sid=orcl

Rman target sys/pwd catalog user/pwd@sid;

Startup nomount;

Restore controlfile;

Alter database mount;


6、还原控制文件后的数据库恢复

当使用RMAN 还原控制文件(并且没有丢失数据文件和联机重做日志),有两件事要考虑:首先,要考虑在还原控制文件后如何启动和运行数据库,其实,要恢复与RMAN相关的信息,如使用RMAN 在新创建的控制文件中注册归档的重做日志和备份集。

(1)在恢复控制文件后打开数据库

如果只丢失了控制文件,那么恢复控制文件和数据库就非常容易。 恢复控制文件的命令是相同的,只需要模拟一个不完全恢复操作以打开数据库。

Noarchivelog 模式,恢复方法

set oracle_sid=orcl

Rman target sys/pwd;

set dbid=1247395743

startup nomount;

Restore controlfile from autoback;

Alter database mount;

Recover database noredo;

Alter database open resetlogs;

Archivelog 模式,恢复方法

set oracle_sid=orcl

Rman target sys/pwd;

set dbid=1247395743

startup nomount;

Restore controlfile from autoback;

Alter database mount;

Recover database;

Alter database open resetlogs;

当然,丢失其他物理文件可能会使这种恢复操作变得复杂。 此外,如果没有最近的控制文件备份,则操作就变得非常复杂,并且可能最终需要使用create control file 命令重建控制文件。


(2)还原控制文件中RMAN 相关的记录

一旦还原了控制文件,就需要考虑丢失RMAN相关数据的可能性。 由于RMAN将所有数据存储在控制中,很有可能至少丢失与归档的重做日志相关的一些记录(Oracle 需要完全恢复归档的重做日志)。

RMAN 简化了这个问题的处理,因为可以在还原控制文件后注册各种RMAN 相关的备份文件,从而确保控制文件中有恢复所需的全部文件。 为了重建RMAN 相关的归档重做日志记录,可以使用catalog 命令来在控制文件中注册归档重做日志。 Catalog 命令可用于注册特定的备份集片。 如:

RMAN>catalog backuppiece 'F:/BACKUP/ORCL_11LH4449_1_1.BAK';

也可以对归档的重做日志编目录:

RMAN>catalog archivelog 'D:/archivelog/ORCL_1_102_719615012.ARC';

如果每天生成太多的redo log,采用这种方法就很麻烦。 RMAN 可以对整个目录编目录,而不需要列出单个文件,只要再次使用catalog 命令及以下的一个关键字即可:

(1)recovery area 或者 db_recovery_file_dest

(2)Start with

recovery area 和 db_recovery_file_dest 功能相同,他们是RMAN对整个FRA 编目录,如果RMAN 发现已经对一些文件编目录,它就会跳过这些文件并继续对控制文件中的剩余文件编目录。如:

RMAN>catalog recovery area;

如果没有使用FRA,则可以使用start with 语法。 该语法允许遍历非FRA备份目录并且对包含该目录以及该目录下任何子目录中的所有RMAN相关文件编目录。 如:

RMAN>catalog swart with 'D:/archivelog';


7、联机还原控制文件

不管是否使用控制文件或恢复目录,在数据库启动时从数据库备份中析取控制文件的副本是非常容易的。如果不使用恢复目录且控制文件的自动波备份可用,只需要执行下面的命令即可:

RMAN>restore controlfile to 'd:/backup/' from autobackup;

执行这条命令会在D:/backup 目录中将控制文件还原为test.ora 文件。 对于任何自动备份的还原操作来说,RMAN 只会查找过去7天内生成的控制文件自动备份片。 我们可以使用maxseq 和 maxdays 参数修改这个默认的时间周期。

如果没有使用恢复目录与控制文件的自动备份,或者使用了恢复目录,可以执行下面的命令:

RMAN>restore controlfile to 'd:/backup';

在这种情况下,Oracle 会使用数据库的控制文件找到最新的备份集,并从这个备份集还原控制文件。 当然,使用dbms_backup_restore过程来手工还原控制文件。


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

你可能感兴趣的:(oracle,oracle,oracle,oracle,rman,RMAN还原,还原控制文件,RMAN恢复)