• 在丢失关键或非关键数据文件后执行完全恢复
• 使用增量更新的备份进行恢复
• 切换到映像副本进行快速恢复
• 将数据库还原到新主机上
• 使用备份控制文件进行恢复
- 使用RMAN RESTORE和RECOVER命令
• RESTORE命令:从备份中还原数据库文件
• RECOVER命令:通过应用增量备份和重做日志文件中记录的更改来恢复已还原文件
RMAN> SQL 'ALTER TABLESPACE inv_tbs OFFLINE IMMEDIATE';
RMAN> RESTORE TABLESPACE inv_tbs;
RMAN> RECOVER TABLESPACE inv_tbs;
RMAN> SQL 'ALTERTABLESPACE inv_tbs ONLINE';
Oracle Enterprise Manager 恢复向导创建并运行一个RMAN 脚本以执行恢复
使用RMAN RESTORE和RECOVER命令
从备份中重建整个数据库或数据库某一部分的过程通常包含两个阶段:从备份中检索数据文件的副本,以及从归档和联机重做日志中重新应用自备份以来对文件所做的更改,以使数据库恢复到所需的SCN(通常为最新的SCN)。
• RESTORE {DATABASE | TABLESPACE name[,name]... | DATAFILE name [,name] }...
RESTORE命令将数据文件从磁带、磁盘或其它介质上的备份位置检索到磁盘上,并使其可供数据库服务器使用。RMAN 会从备份中还原恢复操作期间所需的任何归档重做日志。如果备份存储在介质管理器上,则必须配置或分配用于访问存储在介质上的备份的通道。
• RECOVER {DATABASE | TABLESPACE name[,name]... | DATAFILE name [,name] }...
RECOVER命令获取已还原的数据文件副本,并将增量备份和数据库重做日志中记录的更改应用于该副本。
还可以通过Oracle Enterprise Manager 使用恢复向导来执行完全恢复或时间点恢复。在“Availability(可用性)”页上,在“Backup/Recovery(备份/恢复)”部分中单击“Perform Recovery(执行恢复)”。
注:一种自动检测恢复需求并执行该恢复的方法是使用数据恢复指导.
- 执行完全恢复:在ARCHIVELOG模式下丢失了非关键数据文件
如果某个数据文件丢失或损坏,且该文件不属于SYSTEM或UNDO表空间,则只还原并恢复缺失的数据文件。
执行完全恢复:在ARCHIVELOG模式下丢失了非关键数据文件
当数据库处于ARCHIVELOG模式时,如果丢失了任何不属于SYSTEM或UNDO表空间的数据文件,则只会影响缺失文件中的对象。
要使用Oracle Enterprise Manager 还原并恢复缺失的数据文件,请按照以下步骤执行操作:
1.在“Availability(可用性)”属性页上,单击“Perform Recovery(执行恢复)”。
2.选择“Datafiles(数据文件)”作为“Recovery Scope(恢复范围)”,并选择“Restore datafiles(还原数据文件)”作为“Operation Type(操作类型)”。
3.添加需要恢复的所有数据文件。
4.指定从哪个备份还原文件。
5.确定是将文件还原至默认位置还是新位置(如果磁盘或控制器缺失)。
6.提交RMAN 作业来还原和恢复缺失的文件。
由于数据库处于ARCHIVELOG模式,所以可恢复到最后提交的时间,用户不需要重新输入任何数据。
- 执行完全恢复:在ARCHIVELOG模式下丢失了系统关键数据文件
如果某个数据文件丢失或损坏,且该文件属于SYSTEM、UNDO(或SYSAUX)表空间,请执行以下步骤:
1. 实例可能会也可能不会自动关闭。如果未自动关闭,使用SHUTDOWN ABORT关闭实例。
2. 装载数据库。
3. 还原并恢复缺失的数据文件。
4. 打开数据库。
执行完全恢复:在ARCHIVELOG模式下丢失了系统关键数据文件
属于SYSTEM表空间或包含UNDO数据的数据文件被视为系统关键数据文件。
如果使用Oracle Enterprise Manager 进行恢复,则SYSAUX表空间也很关键。如果丢失了这些文件中的一个,就需要从MOUNT状态还原数据库(不同于可以在数据库处于打开状态时还原的其它数据文件)。
通过执行以下步骤进行完全恢复:
1.如果实例尚未关闭,请关闭实例。
2.装载数据库。
3.在“Maintenance(维护)”属性页上,单击“Perform Recovery(执行恢复)”。
4.选择“Datafiles(数据文件)”作为恢复类型,然后选择“Restore to current time(还原到当前时间)”。
5.添加需要恢复的所有数据文件。
6.确定要将文件还原到默认位置还是新位置(如果磁盘或控制器缺失)。
7.提交RMAN 作业来还原和恢复缺失的文件。
8.打开数据库。用户不需要重新输入数据,因为将恢复到最后一次提交的时间。
- 恢复映像副本
RMAN 可使用增量备份来恢复映像副本:
• 映像副本会使用截至增量备份SCN 的所有更改来进行更新。
• 增量备份减少了介质恢复所需的时间。
• 增量还原之后不需要执行映像副本。
恢复映像副本
可使用RMAN 将增量备份应用于数据文件映像副本。
在这种恢复方法中,你使用RMAN 恢复数据文件的副本,即通过将增量备份应用于映像副本将映像副本前滚(恢复)至指定的时间点。映像副本使用执行增量备份时的SCN 之前的所有更改来进行更新。
RMAN 使用在介质恢复中得到的更新数据文件,如同使用在该SCN 得到的完全映像副本一样,因此没有每天创建数据库完全映像副本所需的开销。
下面介绍了将增量备份应用于数据文件映像副本的优点:
• 由于你只需要应用自上一次增量备份以来的归档日志,因此可以减少介质恢复(使用归档日志)所需的时间。
• 在增量还原之后不需要执行完全映像副本。
如果在应用增量备份文件期间恢复过程失败,只需要重新启动恢复过程。在创建映像数据文件副本之前到要停止恢复过程之前的这段时间内,RMAN 自动确定这期间所需应用的增量备份文件。如果RMAN 目录中记录了多个版本的映像副本,RMAN 自动使用最新版
本的映像副本。如果RMAN 不能将增量备份文件与映像副本合并,则它会报告错误。
- 恢复映像副本:示例
如果每天都运行以下命令:
RMAN> recover copy of database with tag 'daily_inc';
RMAN> backup incremental level 1 for recover of copy with tag 'daily_inc' database;
结果如下:
恢复映像副本:示例
如果每天都运行上面所示的命令,则可以随时获得所有数据库数据文件的连续更新的映像副本。
图表显示了每次运行所发生的操作。请注意,这种算法需要一段准备期间;到第3 天后策略才会起作用。
第1 天:RECOVER命令不执行任何操作。尚不存在要恢复的映像副本。BACKUP命令创建映像副本。
第2 天:RECOVER命令仍然不执行任何操作。因为尚不存在增量备份。由于已在第1 天创建了基线映像副本,BACKUP命令会创建增量备份。
第3 天:RECOVER命令将增量备份中的更改应用于映像副本。BACKUP命令将执行另一个增量备份,该备份将在第4 天用于恢复映像副本。依此进行循环。
实施这种备份策略时一定要使用标记,这一点非常重要。标记可以将这些特定的增量备份链接至所创建的映像副本。如果不使用标记,则可能会使用最新但可能不正确的增量备份来恢复映像副本。
- 执行到映像副本的快速切换
SQL> SWITCH DATAFILE 'filename' TO COPY;
执行到映像副本的快速切换
执行以下步骤,可以使用数据文件的映像副本进行快速恢复:
1.使数据文件脱机。
2.使用SWITCH TO ... COPY命令指向这些文件的映像副本。
3.恢复数据文件。
4.使数据文件联机。
此时,数据库是可用的,且数据文件已恢复。但是,如果你希望将数据文件放回其原始位置,请继续执行以下步骤:
5.使用BACKUP AS COPY命令在原始位置创建数据文件的映像副本。
6.使数据文件脱机。
7.使用SWITCH TO COPY命令切换到在步骤5 中创建的副本。
8.恢复数据文件。
9.使数据文件联机。
可以使用此命令来恢复数据文件、表空间、临时文件或整个数据库。切换到的目标文件必须为映像副本。
- 使用SET NEWNAME切换文件
• 在RUN块中使用SET NEWNAME命令来还原到非默认位置。
RUN
{ ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/us