oracle数据库delete 后数据恢复

来源:互联网 发布:里尔政治学院 知乎 编辑:程序博客网 时间:2024/05/29 08:35
1.获得当前的SCN

select dbms_flashback.get_system_change_number from dual;

SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。

  SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
  注释:Oracle 仅根据 SCN 执行恢复。

  它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认

为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,

  这两个名词经常被交替使用。

  究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通

过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。

      2.由于数据库没有停,因此scn号也在不断变化,因此需要查出数据在哪个scn点的时候还是存在的
      SQL> select count(*) from w as of scn 117854000; ------查看数据在scn号为117854000时是否存在
3.select count(*) from 表名 as of scn 10671000; 10671000为或得的SCN后
需要往前调整scn编号
4.insert into t1 select * from t1 as of scn 10670000;
commit;
现在稍微总结一下:

        在做数据表的删除操作之前,一点要谨慎,尤其是在生产系统不能停机的情况下,要么首先将数据库或者表备份

一下,再进行删除,这样就算需要恢复也可以用备份进行恢复;如果删除时候没有做相关备份,在删除之前一定

要先查下系统当前scn,并且验证出数据在哪个scn点的时候还是存在的(这点很重要,如果没有找到,就无法恢

复删除的数据)恢复的时候就基于这个scn点的恢复。

0 0
原创粉丝点击