1、故障点数据库恢复

对于故障点(point-of-failure)的恢复,也称为完全数据库恢复,此时必须要求联机重做日志是完整无损的。 如果丢失了联机重做日志,就必须对数据库做不完全恢复。

我们假设联机重做日志和控制文件完整无损,此时我们通过以下步骤来完全恢复数据库:

Shutdown immediate;

Startup mount;

Restore database;

Recover database;

Alter database open;

这种恢复操作比较简单,但是有几点需要注意。 首先,如果某个文件已经存在并且不需要被恢复,Oracle就不会恢复这个文件。 Oracle 会确定要还原的文件是否存在。 如果已存在,并且已有的文件与准备还原的文件相同,RMAN 就不会再次还原这个文件。 如果备份映像上的文件与已有的数据库文件有所不同,RMAN 则会恢复这个文件。 因此,如果丢失了一个或两个数据文件,可能需要执行一个数据文件或表空间恢复操作。

对于任何archivelog 模式还原操作来说,这些步骤都是非常类似的。 恢复目录服务器参数文件和控制文件之后,可以执行restore database命令,使RMAN 开始还原所有的数据库数据文件。注意的是,在这种情况下,由于我们要还原关键的表空间(SYSTEM表空间),所以必须关闭数据库。 尽管可以联机执行多archivelog 模式的还原操作,但是不能联机执行完全时间恢复操作。

一旦还原了数据文件,Oracle 会执行下一条命令(recover database),这条命令通过应用归档的重做日志(执行完全时间点恢复要用的)使ORACLE RDBMS 开始将数据库恢复到故障点。 此外,RMAN 的另一个优点是它可以从磁盘上还原所需要的归档的重做日志,这样就可以在恢复进程中应用这些归档文件的重做日志。一旦完成了恢复,就可以open 数据库。


2、表空间恢复

有时候,我们只丢失了某个表空间的数据文件,此时,我们可以选择只恢复这个表空间,而不用恢复整个数据库。 表空间恢复可以在不关闭数据库的情况下进行。 示例:

SQL>Alter tablespace tablespace_name offline;

RMAN>restore tablespace tablespace_name ;

RMAN>recover tablespace tablespace_name ;

SQL>Alter tablespace tablespace_name online;

注意:不能将单个表空间或数据文件还原到与数据库其他部分所处时间点不同的某个时间点。

也可以同时还原多个表空间:

SQL>Alter tablespace tablespace_name1 offline;

SQL>Alter tablespace tablespace_name2 offline;

RMAN>restore tablespace tablespace_name1,tablespace_name2 ;

RMAN>recover tablespace tablespace_name1,tablespace_name2 ;

SQL>Alter tablespace tablespace_name1 online;

SQL>Alter tablespace tablespace_name2 online;


3、数据文件恢复

数据文件恢复和表空间恢复很类似,只不过换成数据文件的路径了。这里我们仅替换丢失数据的数据文件,同时保持表空间其余部分的保持联机状态,这样用户任何可以访问这些部分。

补充一点知识:

我们可以通过一下sql 查看file ID和文件的关系。 一般在报错的时候,都会有ID。 这样在恢复的时候也比较方便。

SQL> select file_id,file_name from dba_data_files;

  FILE_ID FILE_NAME

---------- ---------------------------------------------------------------------

        4 D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF

        3 D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF

        2 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF

        1 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF

        5 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF

恢复示例:

SQL>alter database datafile 5 offiline;

SQL>alter database datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF' offline;

RMAN>restore datafile 5;

RMAN>restore datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF';

RMAN>recover datafile 3;

RMAN>recover datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF';

SQL>alter database datafile 3 online;

SQL>alter database datafile 'D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF' online;


4、使用增量备份的恢复操作

Oracle 会在还原数据文件时自动判断是否使用了增量备份策略,还会根据需要自动应用所需的增量备份集。 在这种情况下,不需要执行不同的恢复操作。

使用增量备份的还原操作期间,restore 命令只还原基本备份。一旦完成了这个还原操作,就可以执行recover 命令将增量备份和归档的重做日志应用于数据库。 一旦完成了恢复操作,我们就能正常打开数据库。 在所有情况下,Oracle 都会尝试还原基本备份和最新的增量备份。 这样减少完全恢复数据库所应用的重做日志,从而减少还原时间。

需要注意的是,由于在恢复进程期间,数据库很可能有多个备份集,所以恢复操作的时间会超出我们的预期。 不过,根据多种因素,数据更改速率是一个重要因素,应用增量备份集比应用大量重做日志更快,这种增量备份解决方案就是一个快速的解决方案。 因此,增量备份地优势在于它是一个快速备份的策略并且需要更小的空间来保存备份集片。不过它的代价就是恢复时间有可能会更长。


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html