Oracle恢复被删除表&彻底删除表方式

25 篇文章 3 订阅
本文介绍了在Oracle数据库中如何通过flashback功能恢复误删的表,详细步骤包括查询表空间、删除及恢复表的操作。同时,也展示了使用`purge`选项进行彻底删除表的操作,以及此操作无法被flashback恢复的事实,强调了`purge`在删除表时的永久性。
摘要由CSDN通过智能技术生成

概述:

工作过程中,会出现误删表的情况,这时,可以通过flashback的方式恢复被删除的表。
通过

flashback table table_name to before drop;

语句可以实现恢复表的功能。

如果想要完全删除,在最后增加purge即可。

drop table CELL_SIGN_PD_LIST_ZQ purge;

接下来,我们通过实验的方式进行验证理解。

实验

有如下表:CELL_SIGN_PD_LIST_ZQ

这里写图片描述

我们查看下该表占用的表空间和表的大小。

--查询表空间的剩余空间
select 
    t.TABLESPACE_NAME
   ,SUM(t.BYTES/1024/1024) sz 
from dba_free_space t 
group by t.TABLESPACE_NAME;
--查询表占用空间
select 
    t.segment_name
   ,t.BYTES/1024/1024 sz 
from user_segments t 
where t.segment_type = 'TABLE' 
order by sz desc

这里写图片描述
这里写图片描述

执行删表操作:

drop table CELL_SIGN_PD_LIST_ZQ;

再次查询表,可以确定表确实已删除:

select * form CELL_SIGN_PD_LIST_ZQ;

这里写图片描述
再次查询便空间大小,可以看到已经释放了空间。
这里写图片描述

通过flashback恢复表

flashback table CELL_SIGN_PD_LIST_ZQ to before drop;

再次查询表,可以看到,表已经恢复,并且表空间相应的变小了。

select * form CELL_SIGN_PD_LIST_ZQ;

这里写图片描述


下面测试下完全删除表:purge
有如下一张测试表:test_purge
这里写图片描述
彻底删除表:

drop table test_purge purge;

尝试恢复表:

flashback table  test_purge to before drop

发现无法恢复,并报错:对象不再回收站内。
这里写图片描述

事实上:
drop table 语句中,除非指定了purge字句,否则drop table并不会立即删除表,Oracle只是简单的重命名此表并将其存储在回收站中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值