还原(restore),是指访问先前生成的备份集,从中得到一个或多个对象,然后在磁盘上的某个位置还原这些对象。恢复(recovery),
1、还原(restore),是指访问先前生成的备份集,从中得到一个或多个对象,然后在磁盘上的某个位置还原这些对象。
恢复(recovery),是一个使数据库与给定时间点相一致以保证能够打开这个数据库的实际进程,该进程通常是通过应用重做(包括联机重做日志和归档重做日志)来完成的。
2、要打开一个Oracle数据库,要求这个数据库与给定的时间状态一致。
3、Oracle通过检查每个数据文件头中的当前SCN和控制文件中的当前SCN是否一致来确定数据库是否处于一致状态。
4、如果发现数据库是不一致的,Oracle就需要判断是否能够基于联机重做日志来恢复这个数据库,或者是否需要归档重做日志来完成恢复。如果能够使用联机重做日志来执行恢复操作,它就会执行灾难恢复(或者在RAC环境中执行实例恢复操作),如果不能,它就会停止启动进程,同时要求执行介质恢复操作。
5、使用RMAN(不使用FRA)从自动备份中恢复spfile
restore spfile from autobackup
默认情况下,Oracle会查找一个在过去10天内创建的控制文件备份集,如果没有找到在指定时间周期内创建的控制文件备份集,就会产生一个错误。
使用restore命令的maxseq和maxdays参数可以修改RMAN向后查找控制文件自动备份的时间周期。
恢复示例1
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
restore spfile from autobackup;
shutdown immediate;
恢复示例2(指定路径)
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
run
{
set controlfile autobackup format for device type disk to 'C:\oracle\backup\%F';
allocate channel c1 device type disk;
restore spfile from autobackup;
}
shutdown immediate;
恢复示例3(使用maxseq和maxdays)
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
run
{
set controlfile autobackup format for device type disk to 'C:\oracle\backup\%F';
allocate channel c1 device type disk;
restore spfile from autobackup maxseq 200 maxdays 100;
}
shutdown immediate;
2、使用RMAN和FRA从自动备份中恢复spfile
使用FRA情况下不需要设置DBID,也不用分配信道
set oracle_sid=recover
rman target sys/robert
startup nomount;
restore spfile from autobackup;
shutdown immediate;
3、从特定备份集中恢复spfile
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
run
{
allocate channel c1 device type disk;
restore spfile from 'd:\backup\recover\C-2359725638-20131118-00';
}
shutdown immediate;
4、使用恢复目录恢复spfile
set oracle_sid=recover
rman target sys/robert catalog rcat_manager/password@robt
startup nomount;
restore spfile from autobackup;
shutdown immediate;
5、还原到pfile
restore spfile to pfile 'd:\backup\test.ora';
6、还原控制文件(和恢复spfile差别不大)
恢复示例1
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
restore controlfile from autobackup;
shutdown immediate;
恢复示例2(恢复较早的控制文件备份,除了和恢复spfile一样使用maxseq和maxdays以外还可以用until time)
restore controlfile from autobackup until time "to_date('12/09/2005 13:00:00','MM/DD/YYYY HH24:MI:SS')";
可以使用list backup of controlfile;
7、恢复控制文件后打开数据库
恢复示例1(假设在noarchivelog模式下运行)
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
restore database noredo;
alter database open resetlogs;
恢复示例2(archivelog模式下运行)
set oracle_sid=recover
rman target sys/robert
set DBID = 2359725638;
startup nomount;
restore database;
alter database open resetlogs;
8、使用catalog命令在控制文件中注册恢复相关文件
使用recovery area和db_recovery_file_dest关键字,使RMAN对整个FRA编写目录。
catalog recovery area;
如果没有使用FRA,则使用start with语法。
catalog start with 'c:\oracle\backups\testoem';
9、将备份还原到其他位置(set newname for datafile和switch命令)
startup nomount
restore controlfile from autobackup;
alter database mount;
run
{
set newname for datafile '' to '';
restore database;
recover database noredo;
switch datafile all;
alter database open resetlogs;
}
10、不管是否运行在archivelog模式下,,spfile和controlfile的恢复操作都是相同的。
11、故障点恢复(完全恢复)需要联机重做日志是完整的,需要一个完整的controlfile。
12、联机表空间恢复
sql 'alter tablespace users offline';
restore tablespace users;
recover tablespace users ;
sql 'alter tablespace users online';
推荐阅读:
RMAN 配置归档日志删除策略
Oracle基础教程之通过RMAN复制数据库
RMAN备份策略制定参考内容
RMAN备份学习笔记
Oracle数据库备份加密 RMAN加密