oracle如何根据内部SCN号恢复DML误删除数据
这篇文章主要为大家展示了“oracle如何根据内部SCN号恢复DML误删除数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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较为类似
以上是“oracle如何根据内部SCN号恢复DML误删除数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341