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(''2018-03-16 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('2018-03-16 11:40:00','YYYY-MM-DD HH24:MI:SS');

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

    第三种:其他

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

    select * from user_recyclebin;

    FLASHBACK 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('2018-03-16 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

  • 相关阅读:
    关于运行SWT程序遇到的一个错误的总结
    Window7英文系统中出现的中文乱码的更改设置
    关于SWT中的表格(TableViewer类)
    关于SWT的容器类之----面板Composite类和Group类
    关于SWT中的Combo类和List类
    js怎么获取图片的相对地址
    .NET/MVC-ViewBag、ViewData、TempData区别
    Razor语法(五)
    Razor语法(四)
    Razor语法(三)
  • 原文地址:https://www.cnblogs.com/jassy/p/11480108.html
Copyright © 2011-2022 走看看