暂无图片
oracle 索引重建
我来答
分享
dong wu
2022-03-22
oracle 索引重建

为什么oracle的索引重建后,查看对应的表空间使用率,发现重建后表空间反而增长了很多

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

表空间里还有其他对象占用空间吧,如索引、表之类的

暂无图片 评论
暂无图片 有用 0
Lucifer三思而后行
暂无图片

重建索引并不会减少表空间使用率

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

光比较表空间大小无法确定是否由索引重建引起,你应该直接比较索引本身在重建前后的大小。

暂无图片 评论
暂无图片 有用 0
赵勇

重建索引时,是先建“新”索引,然后再删除“旧”索引。所以,如果建“新”索引时,表空间不足,就会扩展表空间。因此,重建后,可能看到表空间变大了。

暂无图片 评论
暂无图片 有用 0
dong wu
题主
2022-03-23
那咋回收或收缩新建后拓展的那部分空间,让使用率下降呢
赵勇
答主
2022-03-23
1、使用率是指已使用空间/已分配空间。如果像我所说那样,“旧”索引最终被删除,所以,其原使用的空间会变为未使用(空闲)状态,所以,总的已使用空间并不会有明显变化。同时,由于表空间进行了扩展,位于分母位置的已分配的空间会变大,因此,使用率不应该升高,反而极有可能是下降。2、tablespace中未分配空间的回收实际上是对构成表空间的数据文件所占空间的回收。而数据文件的未分配空间的回收,只能是对位于文件尾端的未分配空间进行。也就是说,如果一个10G的数据文件,其在文件尾部存有一个1G大小的段,而前面有9G大小的未分配空间,那么这9个G是不能回收的。反之,如果这1G的段是在文件的头部或中部,那么位于尾部的未分配空间才是可以回收的。因此,从数据文件上回收空间,又演变为如何将其上的段移到文件前端的问题。但并没有什么简单的方法可以做到这一点。相对简单的方法是将指定表空间的数据导出,删除原表空间重建,再导入。
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏