刚学习ORACLE,学到RMAN这一章,有个问题比较疑惑例如我在SCOTT里面建立一个表TMP,里面插入2条数据,然后COMMIT;然后启动RMAN备份整库。这之后我删除1条数据,然后COMMIT;然后删除掉一个数据文件模拟出错,再用RMAN恢复整库,这时候不是应该里面有2条数据吗?怎么还是恢复出来的表里面只有一条数据呢?是我操作错了还是我理解错了呢?不是恢复到我备份的时候的状态吗?请大家告知一下~~~

解决方案 »

  1.   

    大概写一下我做的流程 。。建立表和数据
    conn / as sysdba
    create table scott.tmp (name nvarchar2(20))insert into scott.tmp values('test1')
    insert into scott.tmp values('test2')commit;在有两条数据的时候开始备份
    RMAN TARGET /
    BACKUP DATABASE;删除数据
    conn / as sysdbaDELETE FROM SCOTT.TMP WHERE NAME = 'test1'COMMIT;删除一个USERS的数据文件,让ORACLE启动报错,然后进行恢复想恢复为里面有两条数据的情况
    RMAN TARGET /restore   database; 
    recover   database;这样进来了里面为什么只有一条数据呢
      

  2.   

    哥哥,你DELETE并且COMMIT了,那么你DELETE命令的日志写入了日志文件。你要想恢复到DELETE之前,那么你应该使用基于时间点或者SCN的不完全恢复。
    是你理解错了,ORACLE没有错!
      

  3.   

    嗯 刚学ORACLE确实很多不懂的 但是我觉得我恢复的是整个库的操作啊 “你DELETE命令的日志写入了日志文件” 这个日志文件不会被恢复为备份之前的吗?这个我还不是很懂这个日志文件和数据的关系是怎样的呢
      

  4.   

    recover database;
    会根据日志恢复到删除user数据文件那时的资料