您的位置:首页 > 数据库 > Oracle

oracle的数据文件全部丢失,但有归档和重做日志,如何恢复?

2013-09-17 16:09 1026 查看
如果数据文件(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及控制文件完整,可以恢复整个数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: