查询表空间碎片程度:
- 统计碎片程度:
select tablespace_name, count(tablespace_name) from dba_free_space group by tablespace_name having count(tablespace_name) > 10; - 合并表空间:
alter tablespace HS_USER_DATA coalesce; - 释放未使用的表空间:
alter table name deallocate unused;
按表名评估碎片程度:
- 创建视图查看碎片信息:
create or replace view ts_blocks_v as select tablespace_name, block_id, bytes, blocks, segment_name from dba_free_space union all select tablespace_name, block_id, bytes, blocks, segment_name from dba_extents; - 查看碎片信息:
select * from ts_blocks_v; - 统计碎片程度:
select tablespace_name, sum(bytes), max(bytes), count(block_id) from dba_free_space group by tablespace_name;
按表名查询碎片严重程度:
- 统计碎片程度:
SELECT segment_name table_name, COUNT(*) extents FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name HAVING COUNT(*) = (SELECT MAX(COUNT(*)))