首页 > 技术文章 > oracle恢复已被commit删除的内容

gezoo 2015-05-12 16:42 原文

1.FLASHBACK QUERY

闪回到15分钟前
SELECT * FROM tablename AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '15' MINUTE ) WHERE 1=1;
这里可以使用DAY、SECOND、MONTH替换MINUTE ,例如:
SELECT * FROM tablename AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' DAY) WHERE 1=1;
**闪回到某个时间点 **
SELECT * FROM tablename AS OF TIMESTAMP to_timestamp ('2014/05/20 08:20:00','yyyy/mm/dd hh24:mi:ss') WHERE 1=1;
闪回到两天前
select * from tablename as of timestamp (sysdate - 2) where.........

2.FLASHBACK DROP

flashback table tablename to before drop;
如果源表已经重建,可以使用rename to子句:
flashback table order to before drop rename to order_old_version;

3.FLASHBACK TABLE

1.首先要启用行迁移:
alter table tablenameenable row movement;
2.闪回表到15分钟前:
flashback table tablename to timestamp systimestamp - interval '15' minute;
3.闪回到某个时间点:
FLASHBACK TABLE order TO TIMESTAMP TO_TIMESTAMP('2007-09-12 01:15:25 PM','YYYY-MM-DD HH:MI:SS AM')

推荐阅读