11g删除表会放在回收站,如何恢复?如何彻底删除表?
1. 问题
11g删除表会放在回收站,如何恢复,如何彻底删除表?
2. 背景介绍
1. 回收站中的表可以用于闪回,例如某个表被删除了,闪回可以恢复。
语句如下:
flashback table "BIN $zfLIpnfAAnvgQlkK+TM2IA==$0" to before drop;
flashback table 原表名 to before drop rename to 新表名;
-
闪回默认保留1天(db_flashback_retention_target),但是闪回空间默认2G(db_recovery_file_dest_size),占满前不会被自动清理。如果db_recovery_file_dest_size配置为0,则删除的表不能被恢复。
-
在11g中drop表默认会放在回收站中,空间不会释放,并且可能基类很多不会被清理,应该使用普洱个命令彻底删除表,
drop table t_userinfo purge.
测试过程
-
基础准备
使用如下语句新建:
create table t_ums_packageinf_bak as select * from t_ums_packageinfo;
-
删除表并且将表进行恢复
-
删除表
drop table t_ums_packageinf_bak;
-
去除回收站中查询表的信息
select * from dba_recyclebin t where t.original_name = 'T_UMS_PACKGEINF_BAK';
-
执行恢复命令从回收站中将表恢复
flasnback table "BIN $DbWX6OQGAoLgU5VWiApSvg==$0" to before drop.
表被恢复后,dba_recylebin 表中的数据不存在了。
-
-
删除表无法恢复
-
删除表
drop table t_ums_packageinf_bak purge
-
去除回收站中查询表的信息
select * from dba_recyclebin t where t.original_name = 'T_UMS_PACKGEINF_BAK';
查询不到对应的信息。
-
总结:
使用 drop table XX purge 命令删除表的时候,表不能被恢复。