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

来源:这里教程网 时间:2026-03-03 11:47:01 作者:

以下示例内容是由本人亲测的: 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较为类似

相关推荐