Oracle数据库误删,误修改已经提交的恢复方法

以前给自己制定了一个计划,一个月至少写一篇博客。感觉这个已经被我默默的给破化了,以前这样想的就是给自己一些计划去学习新的东西。最近感觉状态很差,没有心情学习(也许是因为过年,也许是因为公司)。自己入这行也这么久了,感觉看不到前途的光芒,有点转行的念头了。不发牢骚了,把今天的博客写了好以后给自己做个参考。
我们在对表操作的时候可能因为自己写的update语句或者delete语句对表产生了计划之外的影响,然后这个时候你又把数据给提交了。这个时候想把数据恢复回来可就有点麻头了,当时我是感觉有点手足无措。但是首先想到的一点就是数据回滚,以前没有处理过这样的问题首先想到的自己网上搜一些资料。网上的资料大多是针对于误删或者误增的恢复,我当时的情况是修改的数据,所以就有点小出入。其实Oracle数据库里面有个功能是对表里面每个时间节点的数据有个备份功能,我们只要把当时误操作之前那个时间段之前的数据查出来然后重新插入到表里面就可以了。但是对于修改的数据这样直接操作会出现问题,因为是对同一个多个主键ID操作多次是不允许的。
INSERT INTO bpm_worklist(SELECT *
     FROM bpm_worklist AS OF TIMESTAMP SYSDATE - 3 / 24 --查询当前日期-1小时前的时间点该表数据。
   MINUS
   SELECT * FROM bpm_worklist);

首先解释一下这段SQL:查出最近一个小时的记录跟现有的记录去重就是你一个小时前的记录,然后把它重新插入到你的表的记录里面。但是对于你修改了多条表里面的记录这个SQL是会报错的。所以你就应该查出一个小时前的记录然后把数据导出,删除数据之后导入你导出的数据。

select * from   bpm_worklist  

AS OF TIMESTAMP TO_TIMESTAMP('2018-02-03 23:00:00',  'yyyy-mm-dd hh24:mi:ss');

这里我换一下查询的时间格式,其实跟上面的那个差不多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值