zoukankan      html  css  js  c++  java
  • oracle根据内部SCN号 恢复DML 误删除数据

    oracle根据内部SCN号 恢复DML 误删除数据

    原创 Oracle 作者:flybluey 时间:2018-07-18 13:39:23  1111  0

    以下示例内容是由本人亲测的:

    1、新建临时表:

    SQL> create table t as select * from dba_tables;

    Table created.

    SQL> select count(1) from t;

      COUNT(1)

    ----------

          2734

    2、查看当前的SCN号。

    SQL> select dbms_flashback.get_system_change_number fscn from dual;

          FSCN

    ----------

       1730685

    也可以通过时间来查看历史的scn号码:

    select name,FIRST_CHANGE#  fscn,NEXT_CHANGE# nscn,FIRST_TIME from v$archived_log;

    13641588409883

    3、删除表中的数据:

    SQL> delete from t;

    2734 rows deleted.

    SQL> commit;

    Commit complete.

    SQL> select count(1) from t;

      COUNT(1)

    ----------

         0

    4、查询历史的SCN号的数据

    SQL> select count(*) from t as of scn 1730685;

      COUNT(*)

    ----------

          2734

    可以查询到历史的SCN号码下面,t表的数量是2734

    5、恢复T表的数据:

    SQL> insert into t select * from t as of scn 1730685;

    2734 rows created.

    SQL> commit;

    Commit complete.

    SQL> select count(1) from t;

      COUNT(1)

    ----------

          2734

    OK 了,通过以上一个简单的示例 我们可以找到一个比较简单的恢复数据的方法。

    且此种方法不需要开启flashback方式运行。但是只能使用DML操作下。若表发生truncate 操作则无法恢复。

    另外这种方法和flashback较为类似

  • 相关阅读:
    脏读 幻读 不可重复读
    按位与、或、异或等运算方法
    java适配器模式
    servlet/filter/listener/interceptor区别与联系
    Struts2、SpringMVC、Servlet(Jsp)性能对比 测试
    Struts2的优点与Struts1的区别:
    ITOO 第一个任务,新建界面
    导出word使用模版
    【Web前端】---js调用本地应用程序
    JQuery经典小例子——可编辑的表格
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/15735935.html
Copyright © 2011-2022 走看看