• 【转】Oracle 如何找回已经删除了的表记录


    有的时候我们不小心把数据库表(emp)中重要的记录给删除了,怎么给找回来了,看下面这个例子你就会明白。

     

    某一天,10点钟的时候,张三一不小心给数据库表emp的一条重要记录给删除了并且还提交了,此时也没有其他任何备份数据,

    他十分惊恐,10:05分他的同事,也就是本人出现了在和他轻松的聊天中给出了如下解决方法,哈哈哈。。。

     

    我:怎么了

    张:我把数据emp表的某几条记录给删除了,我也不知道删除的是那几条。。。

    我:不要急,大概是几点删除的

    张:10点左右

    我:恩,现在10:05分了,也就是5分钟前删除的,还不超过6分钟

    张:怎么办啊,我怎么把那几条数据给找回来啊,下午客户那边还要等着做数据演示了

    我:冷静点,让我想想。。。有了,如果我们能够找回6分钟前的没有删除时候的数据那问题就解决了

           找回6分钟前的原始数据(注意6分钟一定要是操作距现在的有效时间时间区域段,如果大于5分钟不足6分钟,

           这个中间有没有做任何操作那只能坚持就小原则写5,不然会报  ora-01466 : 无法读取数据-表定义已更改)   

    1. select * from emp as of timestamp sysdate - 6/1440  

    我:现在你可以把原来的表哦删掉直接创建备份一个表就可以了   

    1. create table emp as (select * from emp as of timestamp sysdate - 6/1440);  

    张:这到是一个好办法,但是我们公司有规定,表不能随表删除,不然我的绩效奖金就全部泡汤了。。。

    张:能不能在补删除原表的基础上,把找回的记录插入到原表中了

    我:让我,想想。。。有了。。。

    我:我们可以做差,找到删除的记录=6分钟前的原始数据-现在表中的记录,再插入原来的表中,提交

         

    1. insert into emp  
    2. select *  --6分钟前删除的记录  
    3. from(select * --6分钟前删除的记录  
    4.      from emp as of timestamp sysdate - 6 / 1440 --6分钟前的原始数据  
    5.      minus --减去  
    6.      select * from emp --现在表中的记录)  

     张:耶。。。可以了,thanks。。。

     

    From:http://blog.csdn.net/goodleiwei/article/details/7431063

  • 相关阅读:
    poj 1182:食物链(种类并查集,食物链问题)
    hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
    南阳理工 题目9:posters(离散化+线段树)
    poj 1195:Mobile phones(二维树状数组,矩阵求和)
    poj 3984:迷宫问题(广搜,入门题)
    poj 3278:Catch That Cow(简单一维广搜)
    《重构与模式》简化(策略模式)-积木系列
    builder模式-积木系列
    spring事务管理-Spring 源码系列(6)
    思考如何阅读
  • 原文地址:https://www.cnblogs.com/hangwq/p/3511095.html
Copyright © 2020-2023  润新知