1.打开Flash存储的权限
ALTER TABLE tablename ENABLE row movement ;
2.把表还原到指定时间点
flashback table tablename to timestamp to_timestamp(''2008-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
后面的参数为要还原的时间点.此方法有个缺点就是指定的时间点之后的数据也没有有了.
方法二:
查询表FLASHBACK_TRANSACTION_QUERY,从得到的结果中,
取UNDO_SQL字段的值,该字段是记录了恢复操作的语句,执行该sql就可以了. 该表记录了每一个操作的日志.
例如查找test表在2009-8-11 17:05:00到2009-8-11 17:05:59之间所做的删除操作
select * from FLASHBACK_TRANSACTION_QUERY where table_owner='GTOA2' and table_name='TEST' and operation='DELETE'
and commit_timestamp between to_timestamp('2009-8-11 17:01:00','yyyy-mm-dd hh24:mi:ss')
and to_timestamp('2009-8-11 17:05:59','yyyy-mm-dd hh24:mi:ss')
方式三:
查询test表1个小时前的数据:
SELECT * FROM test
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
对于TIMESTAMP 的设置有下面几中方式:
TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour) --查询一小时前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' day) --查询一天前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute ) --查询十分钟前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '50' second ) --查询50秒前的数据