最近发现一个运行了近五年的oracle数据库响应速度越来越慢,一开始怀疑是程序的问题,对一些程序优化过后,并没有明显改善,网上查询相关资料,了解到oracle表空间如果存在大量碎片,也会导致oracle效率降低,通过以下脚本查询得到碎片fsfi 值
select tablespace_name,sqrt(max(blocks)/sum(blocks))*
(100/sqrt(sqrt(count(blocks)))) fsfi
from dba_free_space
group by tablespace_name order by 1;
查询结果如下:1 EXAMPLE 71.3741345382551
2 SYSAUX 26.1954852034411
3 SYSTEM 100
4 UNDOTBS1 52.5921732984285
5 USERS 11.1630233997361