RMAN系列(五),RMAN还原与恢复(五)
且没有丢失数据文件和联机重做日志),有两件事要考虑:首先,要考虑在还原控制文件后如何启动和运行数据库,其实,要恢复与RMAN相关的信息,如使用RMAN 在新创建的控制文件中注册归档的重做日志和备份集。
2.2.6.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.2.6.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';
2.2.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过程来手工还原控制文件。
三.Restore 和 recover 命令
3.1 RESTORE 命令
虽然store 命令有一些辅助目标,但其主要功能是从RMAN备份中还原文件,为恢复做准备。 RMAN和restore 命令非常只能,他们将选择最近的备份来进行还原,从而减少恢复时间。 其结果是,restore 命令可能从备份集中还原数据文件,也可能从映像副本中还原数据文件,或者两者并用来进行还原,只要对加快还原过程有帮助即可。
Restore 命令用于从自动的备份中还原服务器参数文件和控制文件。 Restore 命令也可用于创建备份数据库的备用控制文件。也可以用restore 命令来将数据库还原到任何时间点。在这种情况下,该命令将查找离给定时间点最近的备份以进行还原。 如果没有恢复目录,RMAN 可以在数据库的对应物中将数据库还原到任何时间点(假设备份可用)。 Restore 命令也可将从前面的对应物中还原数据库,但需要建立对应物期间备份控制文件。 如果使用恢复目录,接可以将数据库还原到任何对应物。
Restore 命令也可根据分配给备份的给定标记还原特定的备份。 如果开发环境中存在需要经常用于还原的“黄金”备份,这种还原方式就非常有用。如果需要归档的重做日志,restore 命令也可用于还原归档的重做日志。
此外,restore 命令可用于验证实际恢复数据的能力。 这将确保备份可用于还原数据库,并且可以验证这些备份的完整性。 也可以使用restore preview 命令标识还原数据库所需要的备份。
使用restore命令时,如果备份加密,则需要确保加密方法的正确配置。如果使用透明模式的加密,相应的电子皮夹必须可用。
使用restore 命令时,该命令会在没有认识提示的情况下重写已经存在的任何文件,除非使用set newname命令。 由于这一点,在还原文件时必须非常小心,并且确保重写已经存在的文件不会产生任何不利的影响。
Restore 命令也具有故障恢复功能。在恢复期间,如果RMAN 发现给定的备份文件不可用或者已被破坏,他就会自动尝试使用前面的备份来完成修复过程。 进行故障恢复时,RMAN会在数据库警报日志中添加一条相应的信息。
3.2 RECOVER 命令 recover 命令用于恢复数据库。该命令可以执行数据库的完全恢复或者时间点恢复。 Recover 命令确定需要哪些归档的重做日志,并且析取和应用他们。 一旦完成重做的应用,我们就只需要使用alter database open命令打开数据