基于SCN的不完全恢复使用情况跟基于时间一样,只是这里是根据scn值来恢复的。
首先模拟数据库故障。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
475351
SQL> select file_name from dba_data_files;
FILE_NAME
------------------------------------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/tb1.dbf
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb1.dbf
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 88083752 bytes
Database Buffers 75497472 bytes
Redo Buffers 2924544 bytes
数据库装载完毕。
然后使用rman基于scn来恢复数据库
[oracle@linux ~]$ rman target /
恢复管理器: Release 10.2.0.4.0 - Production on 星期二 10月 18 05:19:51 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
已连接到目标数据库: ORCL (DBID=1292118315, 未打开)
RMAN> run {
2> set until scn=475351;
3> restore database;
4> recover database;
5> alter database open resetlogs; }
正在执行命令: SET until clause
使用目标数据库控制文件替代恢复目录
启动 restore 于 18-10月-11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
正将数据文件00001还原到/u01/app/oracle/oradata/orcl/system01.dbf
正将数据文件00002还原到/u01/app/oracle/oradata/orcl/undotbs01.dbf
正将数据文件00003还原到/u01/app/oracle/oradata/orcl/sysaux01.dbf
正将数据文件00004还原到/u01/app/oracle/oradata/orcl/users01.dbf
正将数据文件00005还原到/u01/app/oracle/oradata/orcl/tb1.dbf
通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_18/o1_mf_nnndf_TAG20111018T045948_79s5t51d_.bkp
通道 ORA_DISK_1: 已还原备份片段 1
段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_18/o1_mf_nnndf_TAG20111018T045948_79s5t51d_.bkp 标记 = TAG20111018T045948
通道 ORA_DISK_1: 还原完成, 用时: 00:00:35
完成 restore 于 18-10月-11
启动 recover 于 18-10月-11
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 8 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_18/o1_mf_1_8_79s5w7pt_.arc 存在于磁盘上
存档日志线程 1 序列 9 已作为文件 /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_18/o1_mf_1_9_79s6h7gh_.arc 存在于磁盘上
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_18/o1_mf_1_8_79s5w7pt_.arc 线程 =1 序列 =8
存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_18/o1_mf_1_9_79s6h7gh_.arc 线程 =1 序列 =9
介质恢复完成, 用时: 00:00:05
完成 recover 于 18-10月-11
数据库已打开
最后可以看见数据库已经打开
SQL> select status from v$instance;
STATUS
------------
OPEN