暂无图片
oracle 12c delete 表数据后如何释放空间?
我来答
分享
只此无云
2022-03-04
oracle 12c delete 表数据后如何释放空间?

版本:12.2

问题:有一张400G左右的表,存在多个BLOB字段,使用delete删除约一半数据后,空间未释放。该如何释放空间?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Uncopyrightable

可以先复制或者有用的数据到一张新表中,然后使用truncate或者drop方式删除旧表数据;

   

TRUNCATE操作,表和索引所占用的空间会恢复到初始大小,

DELETE操作不会减少表或索引所占用的空间。

DROP语句将表所占用的空间全释放掉。

暂无图片 评论
暂无图片 有用 0
暂无图片
薛晓刚

任意版本,del都不释放。

你需要shrink,或者建立分区截断分区。

暂无图片 评论
暂无图片 有用 0
只此无云
题主
2022-03-04
我尝试了shrink,空间没有变化
只此无云
题主
2022-03-04
alter table tablename shrink space compact;
feigch

重新建一个新表,把这张表取代了,然后把这个表和表空间都删除掉就可以了。

暂无图片 评论
暂无图片 有用 0
杨卓

1.首先明确400G的数据是表本身的,还是表的BLOB对象带来的;

2.对于对象的回收可以使用move, lob tables都可以使用move回收空间;

shrink适合单独表的空间回收不适用于lob

暂无图片 评论
暂无图片 有用 0
只此无云
题主
2022-03-04
BLOB对象的,已经通过备份重建表的方式,释放空间了。谢谢
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏