zoukankan      html  css  js  c++  java
  • oracle 闪回(例子)

    oracle闪回是oracle很重要的特性,今天刚接触了一点,写点皮毛,以后再慢慢深入研究

    闪回表

    创建表语句

    create table emp11
    as
    select * from emp
    where 1=2

    删表语句

    drop table emp11

    其实emp11表删了,却在系统中出现一张新表以系统命名的,这就是oracle10G中对删表的处理,原表实际上并未完全删掉,相当于存在回收站中。如果我们需要恢复表emp11,用闪回是很方面的。

    可以用下列语句查出表存在的名称

    select * from tab;

    查询结果

    BIN$YqKHsrh1TMOUvzHmmaSgjQ==$0 TABLE   
    EMP113                         TABLE   
    EMP12                          TABLE   
    BIN$nylcQomQRbqJ1rTyyWP+QA==$0 TABLE   
    BIN$PSVb6sBcSn6+ISIFNrJh3Q==$0 TABLE
    
    

     还可以用这条语句进行查询原表以及生成的表

    select ORIGINAL_NAME,object_name,type from user_recyclebin;

    结果为

    ORIGINAL_NAME                    OBJECT_NAME                    TYPE
    -------------------------------- ------------------------------ -------------------------
    EMP11                            BIN$nylcQomQRbqJ1rTyyWP+QA==$0 TABLE
    

    闪回表语句

    flashback table emp11 to before drop;

    emp11表就恢复了

    恢复完表后最好用purge recyclebin 来释放回收站中的资源。如果删除的时候用下面这条语句删除,那么表就在回收站中,用闪回就不行了。

    flashback table emp11 to before drop;

    如果一个被重复删掉几次,那么恢复时用 flashback table emp11 to before drop; 就恢复最后一次删的,那么怎么恢复前几次删的呢?用这条语句 flashback table emp11 to before drop rename to emp113(这里以emp11表为例) 闪回是和删除的顺序相反的

    闪回表中的数据

    删除表语句以emp表为例

    delete from emp;
    commit

    恢复表数据(这是恢复到具体的某一时间段)

    insert into emp  select * from emp as of timestamp timestamp '2012-02-02 21:12:00'

    还有一种恢复到具体的时间(恢复到20分钟以前)

    insert into emp  select * from emp as of timestamp sysdate -20/1440


    当然还可以闪回数据库的,这里就不说了,闪回的方式还有很多种的如csn号等,以后再慢慢研究 

  • 相关阅读:
    服务器修改时间
    修改MySQL时区
    记录一次服务器防火墙开放端口,参考了网上一位网友的方法可行,在此记录一下
    centos7.2放行80端口
    从零开始搭建系统3.4——缓存组件开发
    从零开始搭建系统3.3——图片服务开发及部署
    从零开始搭建系统3.2——微服务注册中心开发及部署
    从零开始搭搭建系统3.1——顶级pom制定
    从零开始搭建系统2.7——Quartz安装及配置
    从零开始搭建系统2.4——Jenkins安装及配置
  • 原文地址:https://www.cnblogs.com/wujin/p/2336204.html
Copyright © 2011-2022 走看看