RMAN 的整个恢复过程可以分为还原(restore)与恢复(recover),他们在含义上是有
很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复,所以,
正确的理解这两个概念,有助于正确的恢复数据库。
对于RMAN 的备份,还原操作只能是在用RMAN 或RMAN 包来做了,对于恢复操作
则是很灵活的了,除了RMAN,也可以在SQLPLUS 中完成。还原与恢复一个数据库,可
以用如下两个简单的命令完成
RMAN>restore database;
RMAN>recover database;
恢复整个数据库
在恢复整个数据库之前必须让数据库处于安装的状态(mount状态)
sql>startup mount
rman target / <<EOF
run {
allocate channel 'dev1' type disk
allocate channel 'dev2' type disk ;
allocate channel 'dev3' type disk ;
restore
recover database ;
release channel dev1 ;
release channel dev2 ;
release channel dev3 ;
}
恢复单个表空间
在恢复该表空间之前让该表空间处于脱机的状态(offline状态)
svrmgrl>alter tablespace users offline;
rman target / <<EOF
run {
allocate channel 'dev1' type disk
allocate channel 'dev2' type disk ;
allocate channel 'dev3' type disk ;
restore
recover tablespace users ;
release channel dev1 ;
release channel dev2 ;
release channel dev3 ;
}
恢复一个表空间,或者恢复一个数据文件,相对比较恢复数据库可能花费更少的时间。
RMAN> SQL "ALTER TABLESPACE tools OFFLINE IMMEDIATE";
RMAN> RESTORE TABLESPACE tools;
RMAN> RECOVER TABLESPACE tools;
RMAN> SQL "ALTER TABLESPACE tools ONLINE";
对于数据库与数据文件,可以从指定的tag恢复
RMAN>RESTORE DATAFILE 1 FROM TAG=’tag name’
对于时间点恢复等不完全恢复,可能只有完全的还原数据库了。
RMAN> RUN {
2> ALLOCATE CHANNEL c1 TYPE DISK;
3> ALLOCATE CHANNEL c2 TYPE DISK;
4> SET UNTIL TIME = '2002-12-09:11:44:00';
5> RESTORE DATABASE;
6> RECOVER DATABASE;
7> ALTER DATABASE OPEN RESETLOGS; }
不完全恢复在RMAN 中还可以用基于日志的恢复
RMAN> RUN {
2> SET UNTIL SEQUENCE 120 THREAD 1;
3> ALTER DATABASE MOUNT;
4> RESTORE DATABASE;
5> RECOVER DATABASE; # recovers through log 119
6> ALTER DATABASE OPEN RESESTLOGS;
7> }
如果有可能,也可以恢复数据文件到一个新的位置
SET NEWNAME FOR datafile
'/u01/oradata/tools01.dbf' TO '/tmp/tools01.dbf';
RESTORE datafile '/u01/oradata/tools01.dbf';
SWITCH DATAFILE ALL;
除了恢复数据库与数据文件,我们也可以恢复控制文件,需要启动到nomount 下,用如下
的命令即可
14
Restore controlfile from ‘file name’
Restore controlfile from autobackup
Restore controlfile from tag=‘……’
在正常情况下,不用恢复归档日志,恢复进程会自动寻找所需要的归档日志,当然我们也可
以指定恢复到哪里。
SET ARCHIVELOG DESTINATION TO '/u02/tmp_restore';
RESTORE ARCHIVELOG ALL;
如果使用的服务器参数文件(spfile),RMAN 可以备份该参数文件,如果发生文件损坏,可
以用RMAN 恢复spfile 参数文件,在没有参数文件的情况下,用Rman 的临时参数文件启
动数据库到Nomount 下,执行如下命令即可
Restore controlfile from autobackup
Restore controlfile from ‘file name’