• 20.3 使用FLASHBACK TABLE 恢复被删除表


    20.3.1 数据库回收站

    数据库回收站(Database Recycle Bin) 是所有被删除表和相关对象的容器,被存放在回收站的相关对象包括索引、约束、触发器、嵌套表、LOB 段和 LOB 索引段。

    数据库回收站具有以下限制:

    • 回收站只适用于非SYSTEM 的局部管理表空间
    • ORACLE 没有为回收站分配固定的预留空间,因此不能保证数据库对象在回收站中的保留时间。当被删除对象所在表空间没有足够空间时,ORACLE 会使用 FIFO(先进先出) 机制清除回收站的相应对象
    • 使用SELECT 语句可以查询回收站对象的数据,但不能在回收站对象执行DML 和DDL 操作

    1. 生成回收站对象

    SQL> conn scott/tiger@demo
    已连接。
    SQL> create table t1(c int);

    表已创建。

    SQL> create index IX_T1 on t1(c);

    索引已创建。

    SQL> create table t2(c int);

    表已创建。

    SQL> create index IX_T2 on t2(c);

    索引已创建。

    SQL> create table t3(c int);

    表已创建。

    SQL> create index IX_T3 on t3(c);

    索引已创建。

    SQL> drop table t1;

    表已删除。

    SQL> drop table t2;

    表已删除。

    SQL> drop table t3 purge;

    表已删除。

    2. 显示当前用户的回收站对象

    SQL> show recyclebin
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    ---------------- ------------------------------ ------------ -------------------

    T1               BIN$FrfDmiaIQNSrpx16x7B3vw==$0 TABLE        2009-02-19:22:53:03

    T2               BIN$tZjkR3xATvydCPbHzzR3Hg==$0 TABLE        2009-02-19:22:53:04

    SQL> select object_name,original_name from recyclebin;

    OBJECT_NAME                    ORIGINAL_NAME
    ------------------------------ --------------------------------
    BIN$d4mvZ2uiSPK13sVwaDpnwg==$0 IX_T1
    BIN$tZjkR3xATvydCPbHzzR3Hg==$0 T2
    BIN$FrfDmiaIQNSrpx16x7B3vw==$0 T1
    BIN$kR3toQKCQ8Cv3cWiuBRJFQ==$0 IX_T2

    3. 显示数据库的所有回收站对象

    SQL> conn / as sysdba
    已连接。
    SQL> select owner,object_name,original_name from dba_recyclebin;

    OWNER  OBJECT_NAME                    ORIGINAL_NAME
    ------ ------------------------------ --------------------------------
    SCOTT  BIN$d4mvZ2uiSPK13sVwaDpnwg==$0 IX_T1
    SCOTT  BIN$tZjkR3xATvydCPbHzzR3Hg==$0 T2
    SCOTT  BIN$FrfDmiaIQNSrpx16x7B3vw==$0 T1
    SCOTT  BIN$kR3toQKCQ8Cv3cWiuBRJFQ==$0 IX_T2

    4. 清除回收站对象

    SQL> conn scott/tiger@demo
    已连接。
    SQL> purge table t1;

    表已清除。

    SQL> purge index ix_t2;

    索引已清除。

    SQL> purge recyclebin;

    回收站已清空。

    20.3.2 恢复被删除表

    (1) 模拟用户误操作

    (2) 显示回收站对象

    (3) 恢复被删除表

    SQL> conn scott/tiger
    已连接。
    SQL> show recyclebin
    SQL> drop table emp;

    表已删除。

    SQL> show recyclebin
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    ---------------- ------------------------------ ------------ -------------------

    EMP              BIN$/3ZsVld5RhWZuaSOugW64A==$0 TABLE        2009-02-19:23:10:46

    SQL> flashback table "BIN$/3ZsVld5RhWZuaSOugW64A==$0" to before drop rename to newemp;

    闪回完成。

    SQL> drop table newemp;

    表已删除。

    SQL> show recyclebin
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    ---------------- ------------------------------ ------------ -------------------

    NEWEMP           BIN$CQgC0n8+QJK/Y9OfvLD74w==$0 TABLE        2009-02-19:23:13:11

    SQL> flashback table newemp to before drop rename to emp;

    闪回完成。

  • 相关阅读:
    Linux小命了(6)cd
    Linux小命令(5)mkdir
    性能测试(1)-开篇杂谈
    Linux小命令(4)ls
    Linux小命令(3)cat
    Linux小命令(2)man
    机器学习-学习方法
    flask-cache
    mysql 常用时间函数
    发现变化,拥抱变化
  • 原文地址:https://www.cnblogs.com/yiwuya/p/1394396.html
Copyright © 2020-2023  润新知