与数据打交道,免不了会误删一些数据,之后还commit了,连回滚的机会都没了,而更糟糕的是你又没有备份,这种事终于在今天被我不幸的遇上了。。。

  唯一一点值得欣慰的是,我删除表记录的时候,时间不长,一天而已,而我用的删除也是delete删除,不是truncate删除。

  oracle已经考虑到我们会出现这样的错误,所以我们还是可以通过语句找回我们的数据。

  如果我们delete表的数据,我们可以通过以下步骤找回被删除的数据:

  1、确定删除数据的时间,(如果实在记不清楚,只要在删除数据之前的就行)

  2、找出被删除数据的语句,select * from 表名 as of timestamp  to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss');

  3、把删除的数据重新插入原表,insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));

   注意:保证主键不重复。

  如果表结构没有发生变化,我们可以使用闪回功能:

    表闪回要求用户必须要有flash any table权限
    alter table 表名 enable row movement;

    接下来我们执行这个操作

    flashback table 表名  to timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss');

  这下我们知道delete数据了如何恢复。但如果我们是drop一个表之后,还想要找回这个表呢,继续操作:

    由于oracle在删除表时,没有直接清空表所占的块,oracle把这些已删除的表的信息放到了一个虚拟容器“回收站”中,

    而只是对该表的数据块做了可以被覆写的标志,所以在块未被重新使用前还可以恢复。

     可能查询这个“回收站”或者查询user_table视图来查找已被删除的表:

       select table_name,dropped from user_tables

      select object_name,original_name,type,droptime from user_recyclebin

    在以上信息中,表名都是被重命名过的,字段table_name或者object_name就是删除后在回收站中的存放表名

    如果还能记住表名,则可以用下面语句直接恢复:

        flashback table 原表名 to before drop

   如果记不住了,也可以直接使用回收站的表名进行恢复,然后再重命名,参照以下语句:

       flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名  

     切记:如果你使用truncate 删除数据了,而你又没有备份,那这个就很不幸了!!!

原文链接:http://www.cnblogs.com/gzd-123/p/5319607.html

[转]oracle误删数据的恢复的更多相关文章

  1. Oracle误删数据的恢复

    Oracle误删数据的恢复,分为两种方法:SCN和时间戳两种方法恢复. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的SCN号 select current_scn from v$data ...

  2. 关于oracle误删数据的恢复

    与数据打交道,免不了会误删一些数据,之后还commit了,连回滚的机会都没了,而更糟糕的是你又没有备份,这种事终于在今天被我不幸的遇上了... 唯一一点值得欣慰的是,我删除表记录的时候,时间不长,一天 ...

  3. oracle误删除数据的恢复方法

    学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答案. 今天主要以oracle数据库 ...

  4. Oracle误删除数据的恢复方法(转)

    来源:原创网站北京北亚数据恢复中心,转载须注明出处. 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些 ...

  5. linux下误删数据文件恢复

    linux下文件被删除能够用非常多工具进行恢复.比如undelete(适合ext2,ext3).giis(不能恢复安装giis之前的文件).ext3grep(仅限ext3).R-linux(支持ext ...

  6. Oracle误删数据文件后出现oracle initialization or shutdown in progress解决

    一.错误分析 1.首先本人在出现这种情况的背景是执行如下SQL语句后生成的表空间 --自定义表空间 数据表空间 临时表空间 CREATE TEMPORARY TABLESPACE HOUSE_TEMP ...

  7. oracle误删数据的解决方法

    之前不小心误删了一条数据,索性我还记得id,通过select * from 表名 as of timestamp to_timestamp('2017-6-23 9:10:00','yyyy-mm-d ...

  8. SQL Server无备份误删数据的恢复

    在正式生产数据库中,因为客户现场管理不规范产生了一条错误数据,由于自身睡眠不佳加上客户方言表达,将编号记错,在没有备份的情况下,直接连远程数据库执行了delete操作. 由于备份设置的是每日0点,当天 ...

  9. oracle 误删数据的回复操作

    update operator t set t.username = (select username from operator  AS OF TIMESTAMP TO_TIMESTAMP('201 ...

随机推荐

  1. 触发按钮改变panel面板上的小圆圈颜色

    import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TouChaCol implements ...

  2. denoising autoencoder

    神经网络的挑战和关键技术: 1.神经网络结构决定(层,神经元,连接)    加入特定领域的知识(CNN 图片处理) 2.模型复杂度高    大的数据量:    regularization:  dro ...

  3. 1.2 linear SVM 推导

    1.将公式中的distance具体化 将$w_0$单独抽出作为$b$,$w=(w_1,...,w_n),x=(x_1,...,x_n)$ 则分割平面为:$w^Tx+b=0$ A.证明w为法向量     ...

  4. hdu 5583 Kingdom of Black and White(模拟,技巧)

    Problem Description In the Kingdom of Black and White (KBW), there are two kinds of frogs: black fro ...

  5. DB_Links创建际删除

    创建 create database link gadata0008 connect to gadata0008 identified by "gold" using 'ORA11 ...

  6. 垃圾回收算法简单介绍——JVM读书笔记<二>

    垃圾回收的过程主要包含两部分:找出已死去的对象.移除已死去的对象. 确定哪些对象存活有两种方式:引用计数算法.可达性分析算法. 方案一:引用计数算法 给对象中加入一个引用计数器.每当有一个地方引用它时 ...

  7. 发布前,Bat Script备份服务器的Website

    由于远程访问服务器,操作滞后验证,备份不方便.我试了两种方式,VBScript和利用7zip的脚本自动备份网站.下面有简单的说明供参考. 1. VBScript, 使用VB脚本打包,不稳定,在服务器上 ...

  8. JPA 2.1实例(hibernate 实现)

    1.环境准备 1)java se 7 2)maven 3 3)mysql database 2.创建数据库和表结构 首先创建数据库.创建数据库脚本如下: create database jpa; 创建 ...

  9. js previousSibling兼容使用方法

    使用previousSibling的时候发现当前元素跟上一个元素之间有空格就不获取不到对象, 查资料才知道除了ie外js的previousSibling获取的对象包括空格! 兼容方法如下: funct ...

  10. [C#]Windows文件分类器小程序

    我平时习惯把各种文件都下载在`下载`文件夹中,时间久了,文件多了,想要找个文件就不那么方便了.于是我就想自己写一个小程序来实现下载文件的自动整理.我想到的文件分类方式是按照文件扩展名分类:把各文件移动 ...