Oracle数据库如果存在大量的删除和修改操作,会造成表空间碎片出现,如果数量大了,会造成表空间浪费,并使查询操作变慢[@more@]/*查看碎片程度高的表*/
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(*) ) FROM dba_segments GROUP BY segment_name);
//计算表空间的碎片度
select sqrt(max(blocks)/sum(blocks))*
(100/sqrt(sqrt(count(blocks)))) FSFI
from dba_free_space
WHERE tablespace_name=’NARROWAD_BASIC_TABLESPACE’;
group by tablespace_name order by 1;
//整理Orcle的碎片
// 先执行:
alter tablespace TABLESPACE_NAME default storage(pctincrease 1);
// 正常shutdown数据库
// 启动数据库
//再执行:
alter tablespace TABLESPACE_NAME coalesce;