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

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

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较为类似


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29346172/viewspace-2158047/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29346172/viewspace-2158047/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值