修改一个表或者索引现有分区的属性,是可能的。你不能改变tablespace属性。使用alter table ... move partition/subpartition来将
修改一个表或者索引现有分区的属性,是可能的。
你不能改变tablespace属性。使用alter table ... move partition/subpartition来将一个分区或者子分区移动到新的表空间。
修改现有范围或列表分区属性
使用alter table ... modify partition来修改现有范围分区或列表分区的属性。你可以修改段属性(除了tablespace),或者你可以分配和释放区,标识本地索引分区为unusable,或者重建标识为unusable的本地索引。
如果这是一个复合哈希分区表的范围分区,那么请注意以下几点:
如果你分配或释放一个区,,指定分区的每一个子分区都会执行该操作;
同样,修改任何其他属性会导致该分区的所有子分区的相关属性被修改。分区级别的默认属性也会被修改。为了避免修改现有子分区的属性,可以使用modify default attributes语句的for partition子句。
以下是修改一个分区实际属性的一些例子。
该例子修改了sales表sales_q1范围分区的maxextents存储属性:
alter table sales modify partition sales_q1
storage (maxextents 10);
在下面的例子中,在范围-哈希分区表scubagear的ts1分区里,所有的本地索引子分区被标识为unusable:
alter table scubagear modify partition ts1 unusable local indexes;
对于间隔分区表而言,你只能修改范围分区或者已有间隔分区的实际属性。
修改现有哈希分区属性
你也可以使用alter table ... modify partition语句来修改哈希分区的属性。但是,由于所有单个哈希分区的物理属性必须一致(除了tablespace),你只限于:
分配一个新的区
释放一个未使用的区
标识一个本地索引分区为unusable
重建被标识为unusable的本地索引分区
下面的例子重建了dept表和p1哈希分区相关的所有unusable本地索引分区:
alter table dept modify partition p1
rebuild unusable local indexes;
修改现有子分区属性
使用alter table的modify subpartition子句,你可以执行前面列出的相同操作,只是在指定的复合分区表子分区级别。例如:
alter table emp modify subpartition p3_s1
rebuild unusable local indexes;
修改现有索引分区属性
使用alter index的modify partition子句,你可以修改索引分区或其子分区的实际属性。规则和修改表分区属性十分类似,但是对于alter index语句的modify partition子句不同的是,没有重建unusable索引分区的子句,但是有合并索引分区或其子分区的子句。在这种情况下,合并意味着合并索引快以释放它们重新利用。
你还可以使用modify partition来分配或释放本地索引的子分区,或者标识为unusable。
本文永久更新链接地址: