10.5.3 索引组织表的维护

索引组织表是一种特殊类型的表,所有针对普通表的维护都是适用于索引组织表,用户可以像对待普通表一样,在索引组织表上执行ALTER TABLE命令。

需要注意的是,索引组织表中的溢出区与普通表一样,也存储在表段中。用户可以同时修改索引组织表和溢出区的相关信息。例如:


SQL>ALTER TABLE employee INITRANS 5

OVERFLOW PCTFREE 30 INITRANS 10;


针对索引组织表的特点,相关的维护工作主要涉及溢出区的操作。用户可以重新指定非主键列在数据块中的比例,以及需要移动到溢出区中的非主键列。例如:


SQL>ALTER TABLE employee

PCTTHRESHOLD 30

INCLUDING sal;


如果在创建表时没有指定溢出区,可以通过ALTER TABLE命令为其添加溢出区。例如:SQL>ALTER TABLE another_iot ADD OVERFLOW TABLESPACE users;

对于一个索引组织表,我们还可以通过ALTER TABLE命令将表和溢出段一起移动到其他的表空间中。例如:


SQL>ALTER TABLE employee MOVE TABLESPACE data1

OVERFLOW TABLESPACE data2;


当索引组织表被移动到另一个表空间时,表上的索引同时被重建。重建索引是减少索引中存储碎片的一种有效方法。由于索引组织表是将表和索引组织在一起的,随着DML操作的频繁运行,索引中的存储碎片将逐渐增加,这将大大降低数据库的性能。重建索引也可以在原来的表空间中进行,只要对表进行移动操作,索引重建便随之进行。例如:


SQL>ALTER TABLE employee MOVE;