您的位置:首页 > 数据库 > Oracle

oracle分区表、分区索引的管理!

2011-09-28 19:26 405 查看
对于分区的表的操作很多,其中某些操作仅针对某些分区有效,为了避免在演示过程中浪费过多口水标注哪些操作适用于哪些分区,咱们先在这儿列个表,哪个操作适用于哪种分区格式具体可以先参考下面这个表格:
分区表

Range

List

Hash

Range-Hash

Range-List

是否带来IO操作

增加分区

(add partition)

支持

支持

支持

支持

支持

除hash类型外,均不变带来大量IO

收缩分区

(coalesce partitions)

/

/

支持

分区:/

子分区:支持

/



删除分区

(drop partition)

支持

支持

/

分区:支持

子分区:/

支持



交换分区

(exchange partition)

支持

支持

支持

支持

支持



合并分区

(merge partition)

支持

支持

/

分区:支持

子分区:/

支持



修改默认属性

(modify default attributes)

支持

支持

支持

支持

支持



修改分区当前属性

(modify partition)

支持

支持

支持

支持

支持



List分区增加值

(modify partition add values)

/

支持

/

/

分区:/

子分区:支持



List分区删除值

(modify partition drop values)

/

支持

/

/

分区:/

子分区:支持

单纯删除操作无,但可能为了实现成功删除,之前的准备操作会带来一定量的IO

修改子分区模板

(set subpartition template)

/

/

/

支持

支持



移动分区

(move partition)

支持

支持

支持

分区:支持

子分区:/

分区:支持

子分区:/



重命名分区

(rename partition)

支持

支持

支持

支持

支持



分隔分区

(split partition)

支持

支持

/

分区:支持

子分区:/

支持



截断分区

(truncate partition)

支持

支持

支持

支持

支持



注:上述IO列的评估建立在假设分区中均存在一定量数据,并忽略修改数据字典可能触发的IO,忽略造成的索引的重编译带来的IO。

分区索引的操作也有一张表黑黑,如下:

分区索引

索引类型

Range

List

Hash

组合分区

是否带来IO操作

增加分区

(add partition)

全局

/

/

支持

/



本地

/

/

/

/

删除分区

(drop partition)

全局

支持

/

/

/



本地

/

/

/

/

修改默认属性

(modify default attributes)

全局

支持

/

/

/



本地

支持

支持

支持

支持



修改分区当前属性

(modify partition)

全局

支持

/

/

/



本地

支持

支持

支持

支持



重编译分区

(rebuild partition)

全局

支持

/

/

/



本地

支持

支持

支持

支持



重命名分区

(rename partition)

全局

支持

/

/

/



本地

支持

支持

支持

支持



分隔分区

(split partition)

全局

支持

/

/

/



本地

/

/

/

/

另外local索引前头我们多次提到了,其维护会在oracle操作表分区的时候自动进行,需要注意的是global索引,当global索引所在表执行alter table涉及下列操作时,会导至该索引失效:

Ø ADD PARTITION | SUBPARTITION

Ø COALESCE PARTITION | SUBPARTITION

Ø DROP PARTITION | SUBPARTITION

Ø EXCHANGE PARTITION | SUBPARTITION

Ø MERGE PARTITION | SUBPARTITION

Ø MOVE PARTITION | SUBPARTITION

Ø SPLIT PARTITION | SUBPARTITION

Ø TRUNCATE PARTITION | SUBPARTITION

因此,建议用户在执行上述操作sql语句后附加update indexes子句,oracle即会自动维护全局索引,当然,需要注意这中间有一个平衡,你要平衡操作ddl的时间和重建索引哪个时间更少,以决定是否需要附加update indexes子句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: