ORACLE 段的碎片整理

来源:互联网 发布:淘宝卖家服务电话 编辑:程序博客网 时间:2024/06/02 16:06

 

 

段的碎片整理

当生成一个数据库对象时(一个表或一个索引),通过用户缺省值或指定值来为它指定表空间。一个在表空间中生成的段,用于存储对象的相关数据。在段被关闭、收缩、截断之前,段所分配的空间将不被释放。
一个段是由范围组成,而范围是由相邻的Oracle块组成。一旦存在的范围不能再存储新的数据,这个段就会去获得新的范围,但并不要求这些范围是彼此相邻的。这样的扩展会一直继续下去,直到表空间中的数据文件不能提供更多的自由空间,或者范围数量已达到极限。
因此,一个碎片太多的数据段,不仅会影响运行,也会引发表空间中的空间管理问题。所以,每个数据段只含有一个范围是十分有益的。借助监控系统,可以通过检查DBA_SEGMENTS数据字典视图来了解哪些数据库对象含有10个或更多范围的段,确定其数据段碎片。

若一个段的碎片过多,可用两种方法解决:

(1) 用正确的存储参数建立一个新表,将旧表中的数据插入到新表中,再删除旧表;
(2) 利用Export/Import工具。
如:
exp system/manager file=exp.dmp
compress=Y grants=Y indexes=Y
tables=(T1,T2)

若输出成功,进入Oracle,删除上述表。

注:compress=Y表示将在输出过程中修改它们的存储参数。
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y

注:在输入时重新配置新的存储参数。