如果数据文件(dbf)全部丢失,但归档和重做日志都在怎么恢复,下面进行试验
-rw-r----- 1 oracle oinstall 52429312 9月 17 08:50 redo01.log
-rw-r----- 1 oracle oinstall 52429312 9月 17 08:50 redo02.log
-rw-r----- 1 oracle oinstall 52429312 9月 17 15:17 redo03.log
-rw-r----- 1 oracle oinstall 849354752 9月 17 15:16 sysaux01.dbf
-rw-r----- 1 oracle oinstall 545267712 9月 17 15:15 system01.dbf
-rw-r----- 1 oracle oinstall 209723392 9月 17 09:50 temp02.dbf
-rw-r----- 1 oracle oinstall 52436992 9月 17 08:50 test0823.dbf
-rw-r----- 1 oracle oinstall 5251072 9月 17 08:50 TEST2.dbf
-rw-r----- 1 oracle oinstall 5251072 9月 17 08:50 TEST3.dbf
-rw-r----- 1 oracle oinstall 10493952 9月 17 08:50 test.dbf
-rw-r----- 1 oracle oinstall 16777224192 9月 17 09:07 TRSWCMNEW.dbf
-rw-r----- 1 oracle oinstall 10176438272 9月 17 15:17 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 9月 17 08:50 users01.dbf
[oracle@redhat4 orcl]$ rm -rf *.dbf
[oracle@redhat4 orcl]$ ll
总用量 153780
-rw-r----- 1 oracle oinstall 52429312 9月 17 08:50 redo01.log
-rw-r----- 1 oracle oinstall 52429312 9月 17 08:50 redo02.log
-rw-r----- 1 oracle oinstall 52429312 9月 17 15:17 redo03.log
[oracle@redhat4 orcl]$
删除所有dbf文件,模拟数据文件丢失
关闭数据库,启动到mounted状态,进入rman
RMAN> restore database;
启动 restore 于 17-9月 -13
使用通道 ORA_DISK_1
创建数据文件 fno = 9 名称 = /data/orcl/test0823.dbf
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00005恢复到/data/orcl/TRSWCMNEW.dbf
正将数据文件00008恢复到/data/orcl/TEST3.dbf
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_93oi0opl_1_1_20130823
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /oradata/backup/whole_93oi0opl_1_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_93oi0opl_2_1_20130823
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = /oradata/backup/whole_93oi0opl_2_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_93oi0opl_3_1_20130823
通道 ORA_DISK_1: 已恢复备份段 3
段句柄 = /oradata/backup/whole_93oi0opl_3_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 恢复完成, 用时: 00:17:37
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到/data/orcl/undotbs01.dbf
正将数据文件00004恢复到/data/orcl/users01.dbf
正将数据文件00007恢复到/data/orcl/TEST2.dbf
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_94oi0pkf_1_1_20130823
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /oradata/backup/whole_94oi0pkf_1_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_94oi0pkf_2_1_20130823
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = /oradata/backup/whole_94oi0pkf_2_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 恢复完成, 用时: 00:11:02
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/data/orcl/system01.dbf
正将数据文件00003恢复到/data/orcl/sysaux01.dbf
正将数据文件00006恢复到/data/orcl/test.dbf
通道 ORA_DISK_1: 正在读取备份段 /oradata/backup/whole_95oi0q6j_1_1_20130823
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /oradata/backup/whole_95oi0q6j_1_1_20130823 标记 = TAG20130823T100853
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:06
完成 restore 于 17-9月 -13
RMAN> recover database;
启动 recover 于 17-9月 -13
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 37 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_24/o1_mf_1_37_91jfc916_.arc 存在于磁盘上
存档日志线程 1 序列 1 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_25/o1_mf_1_1_91m5ggfo_.arc 存在于磁盘上
存档日志线程 1 序列 1 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_26/o1_mf_1_1_91pqw22p_.arc 存在于磁盘上
存档日志线程 1 序列 2 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_28/o1_mf_1_2_91vcqmdn_.arc 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_28/o1_mf_1_3_91vfjk31_.arc 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_29/o1_mf_1_4_91y2lgop_.arc 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_10/o1_mf_1_5_92x05pk5_.arc 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_11/o1_mf_1_6_92yv2zgd_.arc 存在于磁盘上
存档日志线程 1 序列 7 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_12/o1_mf_1_7_932vy4sj_.arc 存在于磁盘上
存档日志线程 1 序列 8 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_16/o1_mf_1_8_93fc36lo_.arc 存在于磁盘上
存档日志线程 1 序列 9 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_16/o1_mf_1_9_93fg6rxj_.arc 存在于磁盘上
存档日志线程 1 序列 10 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_16/o1_mf_1_10_93fg84q0_.arc 存在于磁盘上
存档日志线程 1 序列 11 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_17/o1_mf_1_11_93h9tpop_.arc 存在于磁盘上
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_24/o1_mf_1_37_91jfc916_.arc 线程 =1 序列 =37
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_25/o1_mf_1_1_91m5ggfo_.arc 线程 =1 序列 =1
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_26/o1_mf_1_1_91pqw22p_.arc 线程 =1 序列 =1
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_28/o1_mf_1_2_91vcqmdn_.arc 线程 =1 序列 =2
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_28/o1_mf_1_3_91vfjk31_.arc 线程 =1 序列 =3
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_08_29/o1_mf_1_4_91y2lgop_.arc 线程 =1 序列 =4
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_10/o1_mf_1_5_92x05pk5_.arc 线程 =1 序列 =5
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_11/o1_mf_1_6_92yv2zgd_.arc 线程 =1 序列 =6
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_12/o1_mf_1_7_932vy4sj_.arc 线程 =1 序列 =7
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_16/o1_mf_1_8_93fc36lo_.arc 线程 =1 序列 =8
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_09_16/o1_mf_1_9_93fg6rxj_.arc 线程 =1 序列 =9
介质恢复完成, 用时: 00:02:48
完成 recover 于 17-9月 -13
RMAN>
在sqlplus中
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
383408440
SQL> select checkpoint_change#,last_change# from v$datafile;
CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
383408440 383408439
9 rows selected.
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
383408439
383408439
383408439
383408439
383408439
383408439
383408439
383408439
383408439
9 rows selected.
SQL> alter database open;
Database altered.
总结:只要归档文件及redolog及控制文件完整,可以恢复整个数据库。