10.4.3 簇的删除

当簇中的表不再需要时,可以将簇删除。簇被删除后,簇中的表和索引都将不再存在。删除簇的用户必须是簇的属主,或者具有DROP ANY CLUSTER系统权限。如果簇中包含一个或多个表,应该先将这些表删除,然后删除这个空的簇,删除表的方法与删除其他普通表的方法相似。删除表的用户必须是簇的属主,或者具有DROP ANY CLUSTER系统权限,除此之外不需要有其他权限,即使这个表位于其他模式中。假设簇dep_dept中的所有表都已经被删除,下面的语句用于将这个空簇删除:


SQL>DROP CLUSTER emp_dept;


如果簇中的表尚未删除,可以使用DROP语句和INCLUDEING TABLES将簇和表一起删除。例如:


SQL>DROP CLUSTER emp_dept INCLUDING TABLES;


如果簇中的某个表包含一个主键,而在簇之外的另一个表通过外键引用这个表,那么用上面的语句是无法直接删除簇的。在这种情况下需要通过DROP语句和CASCADE CONSTRAINS子句将簇删除。例如:


SQL>DROP CLUSTER emp_dept INCLUDING TABLES CASCADE CONSTRAINS;


簇索引可以单独被删除,当簇被删除时簇索引也将一起被删除。如果簇索引单独被删除,簇中的表也将无法使用,这时必须为簇重新创建簇索引。