• Oracle闪回机制


      最近学习oracle的时候,无意中看到oracle的闪回技术flashback,原来oracle在delete数据或者drop的时候,不是直接删除,而是跟windows一样,先把数据放入到回收站中。

    select * from user_recyclebin

      可以查看user_recyclebin,可以看到最近删除的表格以及索引,如下:

      

      下面我们用一个例子测试一下:删除表数据,然后测试数据是否可以被恢复。

    select * from testemp1

      初始数据如下:

      

      现在我们删除一下deptno=10的数据,如下:

    delete from TESTEMP1 where deptno=10 

      查看数据如下:

      

      现在数据已经被删除了,我们利用oracle的闪回技术进行恢复,如下:

      (1)开启行移动功能,否则报错,如下:

        

    alter table TESTEMP1 enable row movement

       (2)执行闪回操作,如下:

     flashback  table testemp1 to timestamp to_timestamp('2017/5/31 16:15:52','yyyy-mm-dd hh24:mi:ss');

     (3)查看表数据,如下:

      

      下面我们直接删除表格drop,如下:删除表格,测试表格是否可恢复。

    drop table TESTEMP1

      查看testemp1,报错如下:

      

      (2)查看垃圾箱,如下:有一条drop记录。

     select * from user_recyclebin order by droptime desc
    

      

      (3)执行闪回,如下:被删除的表格又恢复了。

     flashback table testemp1 to before drop

      下面我们删除表的结构,删除一列sal,然后测试一下表结构以及数据能否被恢复? 如下:

      

      查看回收站,发现没有任何记录,如下:

      

      执行闪回sql报错,如下:

     flashback table testemp1 to timestamp to_timestamp('2017-05-31 16:40:00','yyyy-mm-dd hh24:mi:ss');

      

      总结:oracle的flashback功能,如果删除数据或者直接drop table是可以恢复数据的。如果删除表结构或者先执行删除数据后面又执行了删除表结构,使用flashback是无法恢复的。另外,使用 drop table 表名 purge 或 TRUNCATE TABLE  表名也无法恢复,因为这两个操作执行后,不会把数据放入到回收站中,而是直接删除。

  • 相关阅读:
    python--数据可视化
    python--数据处理与探索
    如何使用.NET开发全版本支持的Outlook插件产品(四)——进阶探讨
    如何使用.NET开发全版本支持的Outlook插件产品(三)——全面控制
    对于.NET Socket连接的细节记录
    如何使用.NET开发全版本支持的Outlook插件产品(二)——完善插件
    如何使用.NET开发全版本支持的Outlook插件产品(一)——准备工作
    不建议双挖
    不要挖门罗
    关于PoW工作量证明的不公平
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/6925017.html
Copyright © 2020-2023  润新知