zoukankan      html  css  js  c++  java
  • Oracle 恢复被删除的数据,解决误操作删除数据

    在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧:

    第一种:

    1.打开Flash存储的权限
    ALTER TABLE tableName ENABLE row movement ;
    2.把表还原到指定时间点
    flashback table tableName to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
    后面的参数为要还原的时间点

    第二种:利用ORacle的快照进行查找某个时间点的数据
    select * from tableName AS OF TIMESTAMP  (SYSTIMESTAMP - INTERVAL '100' MINUTE)

    select * from tableName as of timestamp to_timestamp('2011-05-21 11:40:00','YYYY-MM-DD HH24:MI:SS');

    这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。

    第三种:其他(在别的地方找到的答案,但还没有试过!)

    删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。 

    select * from user_recyclebin;

    FLASH BACK TABLE TABLE_NAME TO BEFORE DROP; 

    如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:

    CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。

    四:通过SCN实现

    SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。

    SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
    注释:Oracle 仅根据 SCN 执行恢复。
    它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
    究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
    1:执行下面语句,将删除时间转换为scn 

    select timestamp_to_scn(to_timestamp('2011-08-03 10:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
    结果:11837812:在将table的scn点取出来。

    select * from moAS OF SCN 11837813;

    最后把查出来得结果insert到原表中

    insert into mo select * from mo AS OF SCN 1183781

  • 相关阅读:
    Parcel与Parcelable剖析
    Binder文集
    Charles 使用教程
    AsyncTask
    Android 编译时注解
    scanf(),gets(),getchar()
    银行家算法
    最长公共子序列(LCS)问题
    动态规划 求解数字三角形最大值
    参数 存在二维数组
  • 原文地址:https://www.cnblogs.com/chaizp/p/5192522.html
Copyright © 2011-2022 走看看