首页 > 代码库 > [转]Oracle DB 使用RMAN执行恢复

[转]Oracle DB 使用RMAN执行恢复

? 在丢失关键或非关键数据文件后执行完全恢复
? 使用增量更新的备份进行恢复
? 切换到映像副本进行快速恢复
? 将数据库还原到新主机上
? 使用备份控制文件进行恢复
 
  • 使用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/users01.dbf‘ TO ‘/disk2/users01.dbf‘;
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE users;
SQL "ALTER TABLESPACE users ONLINE";
}
 
 
? 为数据库或已命名表空间中的所有文件指定一个默认的名称格式,不要单独指定各个名称。
? 默认名称用于RUN块中的DUPLICATE、RESTORE和SWITCH命令。
 
 
使用SET NEWNAME切换文件
SET NEWNAME命令只能在RUN块中使用。该命令可以为后续操作准备名称映射。在上图中的示例中,SET NEWNAME命令定义了该数据文件的还原操作的写入位置。执行RESTORE命令后,users01.dbf数据文件将还原到/disk2/users01.dbf。数据文件将写入到该位置,但控制文件仍不指向该位置。SWITCH命令将导致使用新位置更新控制文件。
 
更有效的方法是,使用SET NEWNAME子句为已命名表空间中的所有数据文件和数据库中的所有数据文件指定默认的名称格式(而不是像在Oracle Database 11gR2 (11.2) 之前的数据库版本中那样分别设置文件名)。
 
SET NEWNAME命令的优先顺序如下所示:
1.SET NEWNAME FOR DATAFILE和SET NEWNAME FOR TEMPFILE
2.SET NEWNAME FOR TABLESPACE
3.SET NEWNAME FOR DATABASE
 
 
  • SET NEWNAME的替代变量
RUN
{ SET NEWNAME FOR DATAFILE 1 TO ‘/oradata1/system01.dbf‘;
SET NEWNAME FOR DATAFILE 2 TO ‘/oradata2/sysaux01.dbf‘;
SET NEWNAME FOR DATAFILE 3 TO ‘/oradata3/undotbs01.dbf‘;
SET NEWNAME FOR DATAFILE 4 TO ‘/oradata4/users01.dbf‘;
SET NEWNAME FOR TABLESPACE example TO ‘/oradata5/%b‘;
DUPLICATE TARGET DATABASE TO dupldb; }
 
 
SET NEWNAME的替代变量
 
要在还原到其它位置时避免可能的名称冲突,使用SET NEWNAME命令的替代变量。
至少指定以下替代变量中的一种:%b、%f和%U。%I和%N是可选变量。
该示例显示SET NEWNAME FOR TABLESPACE命令使用替代变量和显式SET NEWNAME子句来设置默认名称。
 
 
  • 在NOARCHIVELOG模式下执行数据库还原和恢复
? 当数据库处于NOARCHIVELOG模式时,如果丢失了任何数据文件,请执行以下任务:
– 如果实例尚未关闭,请关闭实例。
– 从备份还原整个数据库,包括所有数据文件和控制文件。
– 打开数据库。
? 用户必须重新输入自上一次备份以来所做的更改。
 
 
在NOARCHIVELOG模式下执行数据库还原和恢复
 
如果在NOARCHIVELOG模式下丢失了数据库中的任何数据文件,则需要完全还原数据库,包括控制文件和所有数据文件。如果具有增量备份,则需要执行还原和恢复操作。如果丢失的数据文件属于只读表空间,则只需还原该文件。
 
当数据库处于NOARCHIVELOG模式时,只能恢复到上一次备份时的状态。因此,用户必须重新输入自上一次备份以来所做的更改。
 
对于该类型的恢复,请使用RESTORE和RECOVER命令,或者在Oracle Enterprise Manager 中执行以下任务:
1.如果实例尚未关闭,请关闭实例。
2.在“Maintenance(维护)”属性页上,单击“Perform Recovery(执行恢复)”。
3.选择“Whole Database(整个数据库)”作为恢复类型。
 
  • 使用还原点
还原点为时间点提供了名称:
 
 
 
 
使用还原点
 
可以为特定时间点或SCN 编号指定名称。这可以在将来执行时间点恢复或闪回操作时用作参考。
 
?上图的第一个示例创建了一个表示当前时间点的还原点。如果你打算在数据库中应用对应用程序或数据的更新,并且希望反向引用数据库的此状态,则可以使用BEFORE_MODS还原点。
? 上图中的第二个示例创建了一个表示过去的SCN 100 的还原点。此还原点的使用方式与上一个还原点相同。
正常情况下,还原点至少在数据库中保留由CONTROL_FILE_RECORD_KEEP_TIME初始化参数指定的时间长度。不过,在创建还原点时可以使用PRESERVE选项,该选项会使还原点一直保存到被显式删除为止。
 
可以在V$RESTORE_POINT视图中查看还原点的名称、SCN、时间戳和其它信息。
 
 
 
  • 执行时间点恢复
通过执行以下操作来执行服务器管理的时间点恢复:
1. 确定还原目标点:SCN、时间、还原点或日志序列号。
2. 相应地设置NLS 环境变量。
3. 装载数据库。
4. 使用SET UNTIL、RESTORE和RECOVER命令准备并运行RUN块。
5. 在READONLY模式下打开数据库,并验证恢复点是否为你需要的恢复点。
6. 使用RESETLOGS打开数据库。
 
 
 
执行时间点恢复
可以通过以下步骤执行服务器管理的时间点恢复。数据库必须处于ARCHIVELOG模式。
 
1.确定还原目标。这可以是日期和时间、SCN、还原点或日志序列号。例如,如果你知道某些错误事务处理是在昨天下午3:00 提交的,则可以选择昨天下午2:59 作为目标还原点时间。
 
2.设置国家语言支持(NLS) 操作系统环境变量,确保为RMAN 提供的时间常量的格式是正确的。以下是一些示例设置:
$ export NLS_LANG = american_america.us7ascii
$ export NLS_DATE_FORMAT = "yyyy-mm-dd:hh24:mi:ss"
 
3.装载数据库。如果数据库已打开,则必须先将其关闭,如本例所示:
 
RMAN> shutdown immediate
RMAN> startup mount
 
 
4.创建一个RUN块并运行该块。RECOVER和RESTORE命令应位于同一个RUN块中,这样UNTIL设置可以同时应用于两者。例如,如果选择恢复到特定SCN,则RESTORE命令需要知道该值,以便可以从足够早的备份(即该SCN 之前的备份)还原文件。
 
以下是RUN块的一个示例:
RUN
{
SET UNTIL TIME ‘2007-08-14:21:59:00‘;
RESTORE DATABASE;
RECOVER DATABASE;
}
 
5.打开数据库进行读/写操作时,会立即完成刚刚执行的还原。因此,先先在READ ONLY模式下打开数据库并查看某些数据,检查恢复操作是否符合预期结果。
 
RMAN> SQL ‘ALTER DATABASE OPEN READ ONLY‘;
 
6.如果对恢复结果感到满意,则使用RESETLOGS选项打开数据库,如下所示:
 
RMAN> ALTER DATABASE OPEN RESETLOGS;
 
 
  • 使用备份控制文件执行恢复
? 当前控制文件的所有副本都丢失或损坏时还原和装载备份控制文件。
? 还原备份控制文件之后执行RECOVER命令。
? 执行完全恢复或时间点恢复后使用RESETLOGS选项打开数据库。
 
使用备份控制文件执行恢复
 
如果丢失了当前控制文件的所有副本,则在执行恢复之前必须还原和装载备份控制文件。
 
通过执行恢复操作可恢复丢失的数据文件,也可只恢复控制文件。如果使用了恢复目录,这个过程与使用当前控制文件进行恢复的过程是完全一样的,因为RMAN 可使用恢复目录获取RMAN 元数据。
 
 
  • 恢复丢失的服务器参数文件
使用FROM MEMORY子句可以创建系统范围内的当前参数设置。
 
 
SQL> CREATE PFILE[= ‘pfile_name‘ ] FROM{ { SPFILE [= ‘spfile_name‘] } | MEMORY} ;
SQL> CREATE SPFILE[= ‘spfile_name‘ ] FROM{ { PFILE [= ‘pfile_name‘ ] } | MEMORY } ;
 
 
恢复丢失的服务器参数文件
 
恢复服务器参数文件的最简单方法是使用FROM MEMORY子句,该子句可以使用系统范围内的当前参数设置来创建文本初始化参数文件(PFILE) 或服务器参数文件(SPFILE)。
在RAC 环境中,所创建的文件包含来自每个实例的参数设置。
 
在实例启动期间,所有参数设置均记录到alert.log文件中。在Oracle Database 11g中,alert.log参数转储文本是使用有效的参数语法编写的。这便于对参数进行剪切,并将其粘贴到单独的文件中,从而用作后续实例的PFILE。
 
在实例启动时,PFILE 或SPFILE 的名称被写入到alert.log。使用未知的客户机PFILE 时,预警日志也会对此加以提示。
要支持其它功能,必须将COMPATIBLE初始化参数设置为11.0.0.0 或更高。
 
 
 
  • 从控制文件自动备份还原服务器参数文件
RMAN> STARTUP FORCE NOMOUNT;
RMAN> RESTORE SPFILE FROM AUTOBACKUP;
RMAN> STARTUP FORCE;
 
 
 
从控制文件自动备份还原服务器参数文件
 
如果服务器参数文件已丢失,并且无法使用FROM MEMORY子句,可以从自动备份来还原该文件。这个过程类似于从自动备份中还原控制文件。
 
如果自动备份没有位于快速恢复区中,先为你的数据库设置DBID。发出RESTORE SPFILE FROM AUTOBACKUP命令。
 
 
如果要将SPFILE 还原到非默认位置,请按以下方式指定命令:
RESTORE SPFILE TO <file_name> FROM AUTOBACKUP
 
 
如果要从快速恢复区还原服务器参数文件,请按以下方式指定命令:
RMAN> run {
2> restore spfile from autobackup
3> recovery area = ‘<flash recovery area destination>‘
4> db_name = ‘<db_name>‘;
5> }
 
  • 从自动备份还原控制文件
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
 
 
从自动备份还原控制文件
如果没有使用恢复目录,则应配置控制文件的自动备份,以便能够在需要时快速还原控制文件。不论是否使用快速恢复区,用于还原控制文件的命令都是相同的。
但是,如果使用快速恢复区,RMAN 会隐式交叉检查控制文件中列出的备份和映像副本,并将位于快速恢复区中且已还原的控制文件中未记录的所有文件编入目录,这样可提高已还原的控制文件在还原数据库其余部分时所起的作用。
 
使用上面所示的命令在丢失控制文件后进行恢复。
 
首先,在NOMOUNT模式下启动实例。因为没有控制文件,所以不能装载实例。从备份还原控制文件。因为存在控制文件,所以可以装载数据库。现在,必须恢复数据库,因为当前拥有包含有关旧版本数据库的信息的备份控制文件。恢复数据库后,可以将其打开。由于新的控制文件代表数据库的不同实例,因此必须指定RESETLOGS。
 
注:还原控制文件后并不自动对磁带备份进行交叉检查。如果使用磁带备份,则在还原控制文件并装载数据库之后,必须对磁带上的备份进行交叉检查。
 
 
 
要从自动备份还原控制文件,数据库必须处于NOMOUNT状态。
 
如果自动备份没有位于快速恢复区中,则在发出RESTORE CONTROLFILE FROM AUTOBACKUP命令之前必须设置数据库标识符(DBID),如下例所示:
RMAN> SHUTDOWN ABORT;
RMAN> STARTUP NOMOUNT;
RMAN> SET DBID 1090770270;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
 
RMAN 搜索控制文件自动备份。如果找到了自动备份,RMAN 会将该备份的控制文件还原到CONTROL_FILES初始化参数中列出的所有控制文件位置。
 
如果有恢复目录,则不必设置DBID,也不必使用控制文件自动备份来还原控制文件。可以使用不带参数的RESTORE CONTROLFILE命令:
RMAN> RESTORE CONTROLFILE;
 
在执行此操作时,实例必须处于NOMOUNT状态,且RMAN 必须连接到恢复目录。还原的控制文件会写入CONTROL_FILES初始化参数中列出的所有位置。
使用RESTORE CONTROLFILE ...TO <destination>命令将控制文件还原到非默认位置。
 
如果数据库的SPFILE 也丢失了,而且需要从自动备份中还原,则还原过程与从自动备份还原控制文件相似。必须先为数据库设置DBID,然后再使用RESTORE SPFILE FROM AUTOBACKUP命令。
 
在使用还原的服务器参数文件启动实例后,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选项打开数据库。
 
上面概述了执行灾难恢复的基本过程。装载数据库后,要按照相应的步骤使用备份控制文件执行恢复。

 

来源:http://blog.csdn.net/rlhua/article/details/12346829