十五、非归档模式下的完全恢复
非归档模式下的恢复可能是完全恢复,也可能是不完全恢复,如果联机重做日志被复写,只能做不完全恢复的可能性更大。
参数文件丢失
1.控制文件、数据文件以及联机重做日志文件丢失的恢复
先对数据库做全备。包括数据文件、控制文件和参数文件,并使用快闪恢复区作为备份目录。
SQL> shutdown immediate;
SQL> startup mount;
[oracle@oracle11g ~]$ rman target username/password
RMAN> backup as compressed backupset database;
创建测试表
SQL> alter database open;
SQL> create table test123 as select * from dba_segments;
删除所有数据文件、控制文件
[oracle@oracle11g ~]$ rm -rf /u01/app/oradata/orcl/*
重启数据库,这里直接shutdown immediate可能失败,也可以成功。
SQL> shutdown abort
SQL>
首先恢复控制文件
[oracle@oracle11g 2018_08_05]$ rman target /
RMAN> restore controlfile from '/u01/app/fast_recovery_area/orcl/autobackup/2018_08_05/o1_mf_s_983353814_fpdpkdox_.bkp'
--这里也可以让RMAN自己选择备份文件
RMAN> restore controlfile from autobackup;
SQL> alter database mount;
接着恢复数据库
RMAN> restore database;
由于丢失了所有联机重做日志文件,需要恢复数据库并使用noredo选项,不让RMAN尝试将重做日志应用于数据库,再通过resetlogs重建联机重做日志。
RMAN> recover database noredo;
SQL> alter database open resetlogs;
验证测试表丢失
SQL> select * from test123 where rownum <=1;
2.数据文件丢失的恢复
删除数据文件users01.dbf
[oracle@oracle11g orcl]$ rm -rf users01.dbf
SQL> shutdown abort;
SQL> startup
RMAN> restore datafile 4;
RMAN> recover datafile 4;
SQL> alter database open;
如果联机重做日志没有被复写,能做到完全恢复,否则只能做不完全恢复。
RMAN> restore database;
RMAN> recover database;
SQL> alter database open resetlogs;
3.将数据文件恢复到其他磁盘目录
如果是磁盘损坏,恢复数据文件时必须更改数据文件存放路径。
[oracle@oracle11g orcl]$ rm -rf undotbs01.dbf system01.dbf
SQL> shutdown abort;
SQL> startup
RMAN> run {
set newname for datafile
'/u01/app/oradata/orcl/system01.dbf' to '/u01/app/backup/orcl/system01.dbf';
set newname for datafile
'/u01/app/oradata/orcl/undotbs01.dbf' to '/u01/app/backup/orcl/undotbs01.dbf';
restore database;
switch datafile all;
}
RMAN> recover database until cancel;
SQL> alter database open resetlogs;