1. 程式人生 > >11g刪除表會放在回收站,如何恢復?如何徹底刪除表?

11g刪除表會放在回收站,如何恢復?如何徹底刪除表?

11g刪除表會放在回收站,如何恢復?如何徹底刪除表?

1. 問題

​ 11g刪除表會放在回收站,如何恢復,如何徹底刪除表?

2. 背景介紹

​ 1. 回收站中的表可以用於閃回,例如某個表被刪除了,閃回可以恢復。

​ 語句如下:

flashback table "BIN $zfLIpnfAAnvgQlkK+TM2IA==$0" to before drop;

flashback table 原表名 to before drop rename to 新表名;
  1. 閃回預設保留1天(db_flashback_retention_target),但是閃回空間預設2G(db_recovery_file_dest_size),佔滿前不會被自動清理。如果db_recovery_file_dest_size配置為0,則刪除的表不能被恢復。

  2. 在11g中drop表預設會放在回收站中,空間不會釋放,並且可能基類很多不會被清理,應該使用普洱個命令徹底刪除表,

    drop table t_userinfo purge.
    

測試過程

  1. 基礎準備

    使用如下語句新建:

    create table t_ums_packageinf_bak as select * from t_ums_packageinfo;
    
  2. 刪除表並且將表進行恢復

    1. 刪除表

      drop table t_ums_packageinf_bak;
      
    2. 去除回收站中查詢表的資訊

      select * from dba_recyclebin t where
      t.original_name = 'T_UMS_PACKGEINF_BAK';
    3. 執行恢復命令從回收站中將表恢復

      flasnback table "BIN $DbWX6OQGAoLgU5VWiApSvg==$0" to before drop.
      

      表被恢復後,dba_recylebin 表中的資料不存在了。

  3. 刪除表無法恢復

    1. 刪除表

      drop table t_ums_packageinf_bak purge
      
    2. 去除回收站中查詢表的資訊

      select * from dba_recyclebin t where t.original_name =
      'T_UMS_PACKGEINF_BAK';

      查詢不到對應的資訊。

總結:

​ 使用 drop table XX purge 命令刪除表的時候,表不能被恢復。