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