日期:2014-05-16  浏览次数:20475 次

在Oracle数据库操作中,经常会有不小心误删除数据

Oracle数据库操作中,经常会有不小心误删除数据、drop表的情况出现。以前,这种情况发生后,开发人员通常会去求助DBA或管理者,使用数据库备份恢复去找回这些数据。

从oracle 9i、10g开始,你可以不必去用备份来恢复了。有一种快速恢复方法,称之为flashback。你可以flashback query,也可以flashback table。

一、FLASHBACK QUERY

适应范围:表中的数据持续变化,需要看到某个时间点错误删除修改了某些记录,可以根据这些记录再进行数据恢复。

--闪回到15分钟前

select *? from orders?? as of timestamp (systimestamp - interval '15' minute)?? where ......

这里可以使用DAY、SECOND、MONTH替换minute,例如:

SELECT * FROM orders AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' DAY)

--闪回到某个时间点

select? *?? from orders?? as of timestamp?? to_timestamp ('01-Sep-04 16:18:57.845993', 'DD-Mon-RR HH24:MI:SS.FF') where ...

--闪回到两天前

select * from orders?? as of timestamp (sysdate - 2) where.........