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

在oracle数据库操作中,经常会有不小心误删除数据、drop表的情况出现。以前,这种情况发生后,开发人员通常会去求助DBA或管理者,使用数据库备份恢复去找回这些数据。
从oracle 9i、10g开始,你可以不必去用备份来恢复了。有一种快速恢复方法,称之为flashback。你可以flashback query,也可以flashback table。

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1682086 )

 

一、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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值