利用flashback恢复被drop的对象

在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。所谓的回收站,是一个虚拟的容器,用于存放所有被删除的对象,可以利用flashback功能来恢复它。
SQL> create table t1 as select * from dept;
表已创建。

SQL> select * from t1;

    DEPTNO DNAME          LOC
---------- -------------- -----------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON


SQL> drop table t1;

表已删除。

SQL> commit;

提交完成。

SQL> select * from t1;

select * from t1
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在

SQL> show recyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

T1               BIN$Np1Z3oNRSNOxdp5AwF07yA==$0 TABLE        2015-07-10:17:36:47

SQL> flashback table t1 to before drop;

闪回完成。

SQL> select * from t1;

    DEPTNO DNAME          LOC
---------- -------------- -----------
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

使用Purge命令清除回收站中的对象

SQL> create table t2 as select * from dept;

表已创建。

SQL> select * from t2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> drop table t2;

表已删除。

SQL> commit;

提交完成。

SQL> show recyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------

T2               BIN$kLwX71z7QTCrf712f7HDrA==$0 TABLE        2015-07-10:17:41:37

SQL> purge table t2;

表已清除。

SQL> show recyclebin;
SQL>



猜你喜欢

转载自flymore89.iteye.com/blog/2226280