暂无图片
Oracle delete 之前的数据后 ,表空间占的硬盘空间如何释放?
我来答
分享
暂无图片 匿名用户
Oracle delete 之前的数据后 ,表空间占的硬盘空间如何释放?

Oracle delete 之前的数据后 ,表空间占的硬盘空间如何释放?

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

1.你需要对需要回收表空间对应数据文件的max blocks的对象例如表进行delete数据后,move,shrink才能降低高水位,再降低表或者挪走这个对象,你才能对数据文件进行空间释放;
2.你delete 不会降低高水位,只是blocks变成空块而已。数据文件空间更不会回收。
https://www.modb.pro/doc/4060

暂无图片 评论
暂无图片 有用 0
暂无图片
dbtiger

您好
如果delete的数据量特别大,不建议在业务繁忙时候执行。

做如下操作收回磁盘空间:

  • 1.清理表的水位线:
    a.使用create table a1 as select * from a;复刻表,然后rename表(如:RENAME old_name TO new_name),最后把需要的索引重建;

  • 2.做表的统计分析:
    a.使用dbms_stats.gather_table_stats
    如:

dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'T1');
end;
/

  • 3.表空间resize
    如:ALTER DATABASE DATAFILE ‘xxx’ RESIZE 300M;
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏