如果自动备份没有位于快速恢复区中,则在发出RESTORE CONTROLFILE FROM
AUTOBACKUP命令之前必须设置数据库标识符(DBID),如下例所示:
在使用还原的服务器参数文件启动实例后,RMAN
可从自动备份中还原控制文件。还原和装载控制文件后,就拥有了还原和恢复数据库所必需的备份信息。从备份还原数据库的控制文件后,必须执行完全介质恢复,然后使用RESETLOGS选项打开数据库。
- 使用增量备份恢复处于NOARCHIVELOG模式的数据库
使用增量备份可对处于NOARCHIVELOG模式的数据库执行有限恢复。
STARTUP FORCE NOMOUNT;
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE NOREDO;
ALTER DATABASE OPEN RESETLOGS;
使用增量备份恢复处于NOARCHIVELOG模式的数据库
使用增量备份可对处于NOARCHIVELOG模式的数据库执行有限恢复。增量备份必须是一致备份。
如果创建了增量备份,RMAN 将使用0 级和1 级备份来还原和恢复数据库。
如果联机重做日志文件已丢失或无法应用于增量备份,则必须在RECOVER
DATABASE命令中指定NOREDO选项。如果未指定NOREDO选项,RMAN 会在应用增量备份后搜索联机重做日志文件。如果联机重做日志文件不可用,RMAN
就会发布错误消息。
如果当前联机重做日志文件包含自上一次增量备份以来的所有更改,则可在不指定NOREDO选项的情况下发出RECOVER
DATABASE命令并应用更改。
注:仅当控制文件不是当前控制文件时才需要对其进行还原。
使用此过程可执行以下操作:
? 执行测试还原
? 将生产数据库移到新主机上
在新主机上还原和恢复数据库
使用后面的页中描述的过程执行测试还原。还可使用此过程将生产数据库移到新主机上。
已还原测试数据库的数据库标识符(DBID) 与原始数据库的DBID
相同。如果使用恢复目录连接测试数据库和恢复目录数据库,就会使用测试数据库的信息更新恢复目录。这会影响RMAN 还原和恢复源数据库的能力。
如果你的目的是创建要在新主机上使用的目标数据库的新副本,则应使用RMAN
DUPLICATE命令创建副本数据库。副本数据库分配了一个新DBID,所以可在与原始目标数据库相同的恢复目录中注册该数据库。
要为还原数据库做准备,请执行以下步骤:
? 记录源数据库的数据库标识符(DBID)。
? 将源数据库初始化参数文件复制到新主机。
? 确保在还原主机上可访问源备份,包括控制文件自动备份。
注:如果要执行测试还原,请勿在还原数据文件时连接到恢复目录。如果连接到恢复目录,RMAN
会在恢复目录中记录关于已还原数据文件的信息,还会认为已还原数据库是当前目标数据库。如果控制文件不够大,不能包含备份中需要还原的所有RMAN
资料档案库数据,而此时又必须使用恢复目录,请导出恢复目录,然后将其导入不同的方案或数据库中。使用复制的恢复目录进行测试还原。
为了还原数据库,请在还原主机上执行以下步骤:
1. 配置ORACLE_SID环境变量。
2. 启动RMAN 并在NOCATALOG模式下连接到目标实例。
3. 设置数据库标识符(DBID)。
4. 在NOMOUNT模式下启动实例。
5. 从备份集中还原服务器参数文件。
6. 关闭实例。
7. 编辑还原的初始化参数文件。
8. 在NOMOUNT模式下启动实例。
9. 创建RUN 块以执行下列任务:
– 还原控制文件
– 装载数据库
10.创建RMAN 恢复脚本以还原和恢复数据库。
11.执行RMAN 脚本。
12.使用RESETLOGS选项打开数据库。
将数据库还原到新主机
为了还原数据库,请在还原主机上执行一下列出的步骤。
1.配置ORACLE_SID环境变量,如下例所示:
$ setenv ORACLE_SID orcl
2.启动RMAN 并连接到目标实例。请勿连接到恢复目录,如下所示:
$ rman TARGET /
3.设置数据库标识符(DBID)。通过查询V$DATABASE中的DBID列可找到源数据库的DBID。
RMAN> SET DBID 1090770270;
4.在NOMOUNT模式下启动实例:
RMAN> STARTUP NOMOUNT
由于服务器参数文件尚未还原,所以会收到类似以下内容的错误。RMAN 会使用“虚”参数文件启动实例。
startup failed: ORA-01078: failure in processing system parameters
5.从备份集中还原服务器参数文件并关闭实例,如下例所示:
RESTORE SPFILE TO PFILE ‘?/oradata/test/initorcl.ora‘ FROM
AUTOBACKUP;
6.关闭实例:
SHUTDOWN IMMEDIATE;
7.通过编辑还原的初始化参数文件来更改特定于位置的任何参数(如以_DEST结尾的参数)以反映新目录结构。
8.使用编辑后的文本初始化参数文件在NOMOUNT模式下启动实例。
RMAN> STARTUP NOMOUNT
> PFILE=‘?/oradata/test/initorcl.ora‘;
9. 创建RUN块以便从自动备份中还原控制文件并装载数据库,如下例所示:
RUN
{
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
}
10. 在新主机上查询V$DATAFILE以确定数据库文件名(记录在控制文件中)。创建RMAN
恢复脚本以还原和恢复数据库,根据实际情况可包括以下步骤:
a. 对于还原目标位置不同于原始主机上的位置的每个数据文件,使用SET NEWNAME命令指定它在新主机上的路径。
b. 使用SQL ALTER DATABASE RENAME FILE命令指定联机重做日志文件的路径。
c. 使用SET UNTIL命令将恢复限制到归档重做日志文件的结尾。
d. 包括SWITCH命令,以便控制文件将新路径名识别为数据文件的正确名称。
以下是一个恢复脚本示例:
RUN
{
SET NEWNAME FOR DATAFILE 1 TO ‘?/oradata/test/system01.dbf‘;
SET NEWNAME FOR DATAFILE 2 TO ‘?/oradata/test/undotbs01.dbf‘;
SET NEWNAME FOR DATAFILE 3 TO ‘?/oradata/test/sysaux.dbf‘;
SET NEWNAME FOR DATAFILE 4 TO ‘?/oradata/test/users01.dbf‘;
SET NEWNAME FOR DATAFILE 5 TO ‘?/oradata/test/example01.dbf‘;
SQL "ALTER DATABASE RENAME FILE
‘‘/u01/app/oracle/oradata/orcl/redo01.log‘‘
TO ‘‘?/oradata/test/redo01.log‘‘ ";
SQL "ALTER DATABASE RENAME FILE
‘‘/u01/app/oracle/oradata/orcl/redo02.log‘‘
TO ‘‘?/oradata/test/redo02.log‘‘ ";
SQL "ALTER DATABASE RENAME FILE
‘‘/u01/app/oracle/oradata/orcl/redo03.log‘‘
TO ‘‘?/oradata/test/redo03.log‘‘ ";
SET UNTIL SCN 4545727;
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}
11.执行恢复脚本。
12.使用RESETLOGS选项打开数据库:
RMAN> ALTER DATABASE OPEN RESETLOGS;
完成测试后,可关闭测试数据库实例并删除测试数据库及其所有文件。
? 灾难意味着丢失了整个目标数据库、恢复目录数据库、所有当前控制文件、所有联机重做日志文件和所有参数文件。
? 灾难恢复包括还原和恢复目标数据库。
? 备份集的最低要求:
– 数据文件的备份
– 相应的归档重做日志文件
– 至少一个控制文件自动备份
执行灾难恢复
灾难恢复包括在丢失了整个目标数据库、所有当前控制文件、所有联机重做日志文件、所有参数文件和恢复目录数据库(如果有)后还原和恢复目标数据库。
要执行灾难恢复,至少需要以下备份:
? 数据文件的备份
? 在备份之后生成的相应归档重做日志
? 至少一个控制文件自动备份
执行灾难恢复
基本过程:
? 还原服务器参数文件的自动备份。
? 启动目标数据库实例。
? 从自动备份还原控制文件。
? 装载数据库。
? 还原数据文件。
? 恢复数据文件。
? 使用RESETLOGS选项打开数据库。
上面概述了执行灾难恢复的基本过程。装载数据库后,要按照相应的步骤使用备份控制文件执行恢复。