1、对库进行全备:
   BACKUP DATABASE;
   2、插入数据:
   SQL> alter system switch logfile;
   SQL> insert into tt values(6,'a');
   SQL> insert into tt values(7,'a');
   SQL> insert into tt values(8,'a');
   SQL> alter system switch logfile;
   SQL> select * from tt;
           ID N
   ---------- -
            1 a
            2 a
            3 a
            4 a
            5 a
            6 a
            7 a
            8 a
   3、shutdown,删除控制文件。
   4、启动DB到NOMOUNT
   5、重新连接RMAN.
   C:\ >rman target sys/admin@orcl catalog rman/rman@rman
   恢复管理器: Release 10.2.0.1.0 - Production on 星期日 5月 27 11:06:15 2012
   Copyright (c) 1982, 2005, Oracle.  All rights reserved.
   连接到目标数据库: hunt (未装载)
   连接到恢复目录数据库
   
   RMAN> list backup of controlfile;
   备份集列表
   ===================
   BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
   ------- ---- -- ---------- ----------- ------------ ----------
   5809    Incr 0  1.13M      DISK        00:00:04     16-5月 -12
           BP 关键字: 5819   状态: AVAILABLE  已压缩: YES  标记: LEVEL_0_DATA_20120526
   段名:E:\RMAN\ORACLE10G_HUNT_DATA_0_20120516_8RNB5J3E_1_1.RMAN
     包括的控制文件: Ckp SCN: 1264052      Ckp 时间: 16-5月 -12
   BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
   ------- ---- -- ---------- ----------- ------------ ----------
   7490    Incr 0  1.03M      DISK        00:00:07     27-5月 -12
           BP 关键字: 7494   状态: AVAILABLE  已压缩: YES  标记: LEVEL_0_DATA
   段名:E:\RMAN\ORACLE10G_HUNT_DATA_0_20120527_03NC19NH_1_1.RMAN
     包括的控制文件: Ckp SCN: 1287238      Ckp 时间: 27-5月 -12
   
   6、恢复控制文件
   RMAN> restore controlfile;
   ----默认情况会备份中使用最新的控制文件
   启动 restore 于 27-5月 -12
   分配的通道: ORA_DISK_1
   通道 ORA_DISK_1: sid=155 devtype=DISK
   通道 ORA_DISK_1: 正在开始恢复数据文件备份集
   通道 ORA_DISK_1: 正在复原控制文件
   通道 ORA_DISK_1: 正在读取备份段 E:\RMAN\ORACLE10G_HUNT_DATA_0_20120527_03NC19NH_1_1.RMAN
   -----备份集中最新控制文件
   通道 ORA_DISK_1: 已恢复备份段 1
   段句柄 = E:\RMAN\ORACLE10G_HUNT_DATA_0_20120527_03NC19NH_1_1.RMAN 标记 = LEVEL_0_DATA
   通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03
   输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\CONTROL01.CTL
   输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\CONTROL02.CTL
   输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\CONTROL03.CTL
   完成 restore 于 27-5月 -12
   
   7、MOUNT数据库:
   SQL> alter database mount;
   
   SQL> select file#,checkpoint_change# from v$datafile;
        FILE# CHECKPOINT_CHANGE#
   ---------- ------------------
            1            1287162
            2            1287165
            3            1287165
            4            1287162
            5            1287162
            6            1287162
            7            1287165
            8            1287165
   
   SQL> select file#,checkpoint_change# from v$datafile_header;
        FILE# CHECKPOINT_CHANGE#
   ---------- ------------------
            1            1289761
            2            1289761
            3            1289761
            4            1289761
            5            1289761
            6            1289761
            7            1289761
            8            1289761
   此时可以看到数据文件的SCN号要比控制文件的大。此时需要使用recover database using backup controlfile;
   
   SQL> recover database using backup controlfile;
   ORA-00279: change 1287238 generated at 05/27/2012 10:38:04 needed for thread 1
   ORA-00289: suggestion :
   E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\HUNT\ARCHIVELOG\2012_05_27\O1_MF_1_
   16_%U_.ARC
   ORA-00280: change 1287238 for thread 1 is in sequence #16
   Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
   此时有三个SCN号:
   v$datafile:1287162
   v$datafile_header:1289761
   恢复目标SCN: 1287238
   我们可以从备份中知道:
   
   RMAN> list backup;
   List of Backup Sets
   ===================
   BS Key  Type LV Size       Device Type Elapsed Time Completion Time
   ------- ---- -- ---------- ----------- ------------ ---------------
   7490    Incr 0  1.03M      DISK        00:00:07     27-MAY-12
           BP Key: 7494   Status: AVAILABLE  Compressed: YES  Tag: LEVEL_0_DATA
           Piece Name: E:\RMAN\ORACLE10G_HUNT_DATA_0_20120527_03NC19NH_1_1.RMAN
     Control File Included: Ckp SCN: 1287238      Ckp time: 27-MAY-12  ----控制文件备份时SCN
   BS Key  Type LV Size       Device Type Elapsed Time Completion Time
   ------- ---- -- ---------- ----------- ------------ ---------------
   7492    Incr 0  136.16M    DISK        00:01:50     27-MAY-12
           BP Key: 7496   Status: AVAILABLE  Compressed: YES  Tag: LEVEL_0_DATA
           Piece Name: E:\RMAN\ORACLE10G_HUNT_DATA_0_20120527_02NC19KE_1_1.RMAN
     List of Datafiles in backup set 7492
     File LV Type Ckp SCN    Ckp Time  Name 
     ---- -- ---- ---------- --------- ----
     2    0  Incr 1287165    27-MAY-12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\UNDOTBS01.DBF
     3    0  Incr 1287165    27-MAY-12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\SYSAUX01.DBF
     7    0  Incr 1287165    27-MAY-12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\TEST_001.DBF
     8    0  Incr 1287165    27-MAY-12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\HUNT\HUNT001.DBF
   最后一步的日志放在REDO文件中,
   执行recover database using backup controlfile;后,手动指定REDO的路径,需要一个一个测试。
   
   SQL> recover database using backup controlfile;
   ORA-00279: 更改 579492 (在 05/27/2012 18:29:51 生成) 对于线程 1 是必需的
   ORA-00289: 建议:
   E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\HUNT\ARCHIVELOG\2012_05_27\O1_MF_1_7_%U_.ARC
   ORA-00280: 更改 579492 (用于线程 1) 在序列 #7 中
   
   指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
   E:\oracle\product\10.2.0\oradata\HUNT\redo03.log
   已应用的日志。
   完成介质恢复。
   如果我们想知道哪个REDO文件是用来恢复的,可以通过DUMP查看:
   SQL> alter system dump logfile 'E:\oracle\product\10.2.0\oradata\HUNT\redo03.log';
   
   在udump下生成一个文件,打开可发现文件中有以下内容:
   Low  scn: 0x0000.0008d7a4 (579492) 05/27/2012 18:29:51
   Next scn: 0xffff.ffffffff 01/01/1988 00:00:00                      ----下一个SCN为无穷大。
   SQL> select file#,checkpoint_change# from v$datafile;
        FILE# CHECKPOINT_CHANGE#
   ---------- ------------------
            1            1287162
            2            1287165
            3            1287165
            4            1287162
            5            1287162
            6            1287162
            7            1287165
            8            1287165
   
   SQL> select file#,checkpoint_change# from v$datafile_header;
        FILE# CHECKPOINT_CHANGE#
   ---------- ------------------
            1            1289761
            2            1289761
            3            1289761
            4            1289761
            5            1289761
            6            1289761
            7            1289761
            8            1289761
   ----此时发现所有的SCN并未改变。
   
   SQL> select * from tt;
           ID N
   ---------- -
            1 a
            2 a
            3 a
            4 a
            5 a
            6 a
            7 a
            8 a
   
   最后:
   recover database using backup controlfile 指定恢复是不以当前控制文件的SCN号为恢复终点。可完全恢复数据。