Oracle 数据库碎片清理实践(oracle清理碎片)
Oracle 数据库碎片清理是大部分Oracle数据库管理员在数据库维护中不可缺少的一步,根据Oracle官方建议,每季应该对数据库表空间进行一次碎片清理。
首先,许多用户可能不太清楚什么是表空间中的碎片,它产生的原因,和如何处理它们。其实,在使用Oracle数据库的过程中,物理存储空间的分配对应着表空间中的逻辑结构,而随着用户删除、更新、插入操作,会产生表空间中的碎片。可以把表空间碎片看作空间碎片,Column碎片,Index碎片,空洞,测试等。
其次,碎片清理的优势是非常明显的,可以提高表空间的使用率,比如,我们可能会在表空间中有大量的空洞,但是由于碎片的存在,无法使用,最终影响表空间的使用率。而且碎片清理还可以提高索引的性能,增加数据的读写次数,以及减少数据的同步错误以及按比例提高查询访问速度等等。
最后,Oracle数据库碎片清理的实践方法也比较代表一种,如使用DBMS_SPACE.DROP_UNUSED_SPACE函数,该函数可以扫描出包含空之内及空洞的表段,它可以提供清理碎片的功能。另外,还可以利用ALTER TABLE XXX.XXX MOVE语句实现表空间清理,如:
SQL> ALTER TABLE SCOTT.EMP MOVE TABLESPACE EMP_SIZE;
该语句会将表SCOTT.EMP中的表段或碎片移动到表空间EMP_SIZE中,也可以清理掉碎片。
总之,Oracle数据库碎片清理对于提高表空间使用率和性能进行是很重要的,上述我们介绍的DBMS_SPACE.DROP_UNUSED_SPACE函数和ALTER TABLE MOVE语句都可以很好的实现碎片清理的目的。