日期:2014-05-17  浏览次数:20939 次

rman基于时间点还原的问题
(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"啊

------解决方案--------------------
第一你的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之后的时间才可以