oracle archive模式可以把数据库恢复到任何以前时间点,但单独一个用户的数据回到某一点,只知道用Logmnr可以做到,没听说过回闪技术。

解决方案 »

  1.   

    使用oracle9i的flushback功能:
    前提:设定UNDO_RETENTION值,比如UNDO_RETENTION=1000000
          设定UNDO_MANAGEMENT=AUTO
    然后就可以使用as of语句:
    SQL> select count(*) from tang;  COUNT(*)
    ----------
        171401SQL> delete tang where rownum<10000;已删除9999行。SQL> commit;提交完成。SQL> select count(*) From tang;  COUNT(*)
    ----------
        161402SQL> select count(*) From tang as of timestamp to_timestamp('20031024','yyyymmdd')  COUNT(*)
    ----------
        171401
      

  2.   

    select count(*) From tang as of timestamp to_timestamp('20031024','yyyymmdd')
    找到的是历史数据还是什么?数据库里还有这些数据的物理数据吗?
    打开oracle程序窗口后,还能显示原来的 数据吗 ?
      

  3.   

    找到的是日期为20031024的数据,也就是删除并提交之前的数据,它存放在ORACLE 的auto management rollback tablespace 中,数据库会在自动维护UNDO_RETENTION 中设置的时间之内的数据,使得在这个时间内的数据可以使用FLASHBACK查询得到.