您好,欢迎访问一九零五行业门户网

flashback table快速恢复误删除的数据

在oracle数据库操作中,经常会有不小心误删除数据、drop表的情况出现。以前,这种情况发生后,开发人员通常会去求助dba或管理者,使用数据库备份恢复去找回这些数据。 从oracle 9i、10g开始,你可以不必去用备份来恢复了。有一种快速恢复方法,称之为flashbac
在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.........
二、flashback table
1、表已经drop掉之后使用,可以快速恢复。
flashback table orders to before drop;
如果drop的表已经重新建立了一个同名称的表,那么需要加上rename to子句。
flashback table order to before drop   rename to order_old_version;
2、表的数据错误删除或修改后,没有后续数据变化,可以快速恢复。
第一步,首先要启用行迁移
alter table order enable row movement;
第二步,闪回表
到15分钟前:
flashback table order   to timestamp systimestamp - interval '15' minute;
到某个时间点:
flashback table order to timestamp    to_timestamp('2007-09-12 01:15:25 pm','yyyy-mm-dd hh:mi:ss am')
其它类似信息

推荐信息