一、恢复类型:
使用RMAN做的备份只能通过RMAN进行恢复,恢复分为两种:数据库修复(Restore)和数据库恢复(Recover)。
Restore:指用备份文件来替换已损坏的数据库文件。操作时会利用恢复目录来获取备份信息(如果没有恢复目录则使用数据库的控制文件)
Recover:利用重做日志或增量备份来重建丢失的数据。
二、恢复数据库:
恢复数据库必须使数据库处于加载状态:
RMAN> Shutdown immediate;
RMAN> Startup mount;
RMAN> Restore database;
RMAN> Recover database delete archivelogs skip tablespace temp;
RMAN> Alter database open;
注意:
1、skip指跳过某文件类型
2、若数据库是非归档模式,则必须使用RMAN> Alter database open resetlogs
三、恢复表空间:
RMAN> Shutdown immediate;
RMAN> Startup mount;
RMAN> SQL 'Alter tablespace users offline immediate';
RMAN> Restore tablespace users;
RMAN> Recover tablespace users;
RMAN> SQL 'Alter tablespace users online' ;
RMAN> Alter database open;
四、恢复数据文件:
RMAN> Shutdown immediate;
RMAN> Startup mount;
RMAN> SQL 'Alter tablespace datafile 7 offline';
RMAN> Restore datafile 7;
RMAN> Recover datafile 7;
RMAN> SQL 'Alter tablespace datafile 7 online' ;
RMAN> Alter database open;
附:文件号查询SQL
select ts.tablespace_name, df.file_name, df.file_id, tf.file_name
from dba_tablespaces ts, dba_data_files df, dba_temp_files tf
where ts.tablespace_name = df.tablespace_name(+)
and ts.tablespace_name = tf.tablespace_name(+)
五、恢复控制文件:
RMAN> Shutdown immediate;
RMAN> Startup nomount;
RMAN> Restore controlfile to 'xxxxxxxxxx'; --恢复控制文件
RMAN> Alter database mount;
RMAN> Restore database;
RMAN> Recover database;
RMAN> Alter database open;
六、不完全恢复:
1、基于时间:
RMAN> Run {
Allocate channel ch1 type disk;
Set until time ' 06-OCT-08 10:00:00 ';
Restore database;
Recover database;
SQL 'alter database open resetlogs';}
2、基于日志序列号:
RMAN> Run {
Allocate channel ch1 type disk;
Set until logseq=2 thread=4; --日志序号;文件线程号
Restore database;
Recover database;
SQL 'alter database open resetlogs';}
3、基于更改:
RMAN> Run {
Allocate channel ch1 type disk;
Set until scn n; --事务号
Restore database;
Recover database;
SQL 'alter database open resetlogs';}