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 命令删除表的时候,表不能被恢复。

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/85840945