暂无图片
分享
lincg
2019-03-15
oracle表空间碎片整理

oracle的表空间碎片如何查询,到什么样的程度oracle表空间中的碎片需要整理

收藏
分享
2条回答
默认
最新
章芋文

首先要收集表的统计信息,然后通过统计信息计算出实际空间于user_extents占用的空间相比,一般碎片超过25%就可以考虑shrink或者move整理表碎片。

查询SQL参考:

select t.table_name,
       avg_row_len * num_rows / (1 - pct_free / 100) / 8192 actual_block,
       alloc_block,
       1 - ((avg_row_len * num_rows / (1 - pct_free / 100) / 8192) / alloc_block) percen,
       'alter table '||t.table_name||'enable row movement'||';' enable_row,
       'alter table '||t.table_name||'shrink space'||';' ddl_shrink
from (select segment_name, sum(blocks) alloc_block
          from user_extents
      having sum(blocks) > 8
         group by segment_name) a,
       user_tables t
where a.segment_name = t.table_name
   and t.table_name='XXXX'
order by 4 desc
暂无图片 评论
暂无图片 有用 0
章芋文
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏