(1)建一张表做测试:
       create table lala(n number);
       insert into lala values(1);  
       select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
            2012-02-07 18:34:48
       commit;
       shutdown;
(2)进行完全备份
     backup database include current controlfile plus archivelog skip inaccessible delete input;
(3)插入数据并查看时间
     insert into lala values(2);
     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 
          2012-02-07 18:39:58
     commit;
     shutdown
(4)进行基于时间点还原
run{
               set until time"to_date('2012-02-07 18:39:58','yyyy-mm-dd hh24:mi:ss')";      
               restore database;
               recover database;
               alter database open resetlogs;
              }
用第一个时间点还原提示说文件不存在,是不是说不能还原到备份前的时间点
用第二个时间点还原后查询lala表里只有一个数据“1”,按理说还应该有个“2"啊

解决方案 »

  1.   

    第一你的RMAN脚本里的时间还原点有问题
    set until time"to_date('2012-02-07 18:39:58','yyyy-mm-dd hh24:mi:ss')";你的备份至有备份到
    2012-02-07 18:34:48
      commit;
      shutdown;
    (2)进行完全备份
      backup database include current controlfile plus archivelog skip inaccessible delete input;只能还原到该时间
    第二个时间点还原点
    (3)插入数据并查看时间
      insert into lala values(2);
      select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  
      2012-02-07 18:39:58
      commit;这里的 2012-02-07 18:39:58再commit之前,因此查询得到的只有1 ,如果要得到2 ,需要还原到commit之后的时间才可以