Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1148880
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2013-09-24 10:02:59

维护分区表的一些操作:对于分区表的操作,需要关注的一点是全局索引的状态,某些操作会导致全局索引失效,需要rebuild索引。

维护操作

范围分区

哈希分区

列表分区

范围-哈希分区

范围-列表分区

增加分区

ADD PARTITION

ADD PARTITION

ADD PARTITION

ADD PARTITION

MODIFY PARTITION ... ADD SUBPARTITION

ADD PARTITION

MODIFY PARTITION ... ADD SUBPARTITION

聚结分区

n/a

COALESCE PARTITION

n/a

MODIFY PARTITION ... COALESCE SUBPARTITION

n/a

删除分区

DROP PARTITION

n/a

DROP PARTITION

DROP PARTITION

DROP PARTITION

DROP SUBPARTITION

交换分区

EXCHANGE PARTITION

EXCHANGE PARTITION

EXCHANGE PARTITION

EXCHANGE PARTITION

EXCHANGE SUBPARTITION

EXCHANGE PARTITION

EXCHANGE SUBPARTITION

合并分区

MERGE PARTITIONS

n/a

MERGE PARTITIONS

MERGE PARTITIONS

MERGE PARTITIONS

MERGE SUBPARTITIONS

修改默认属性

MODIFY DEFAULT ATTRIBUTES

MODIFY DEFAULT ATTRIBUTES

MODIFY DEFAULT ATTRIBUTES

MODIFY DEFAULT ATTRIBUTES

MODIFY DEFAULT ATTRIBUTES FOR PARTITION

MODIFY DEFAULT ATTRIBUTES

MODIFY DEFAULT ATTRIBUTES FOR PARTITION

修改分区实时属性

MODIFY PARTITION

MODIFY PARTITION

MODIFY PARTITION

MODIFY PARTITION

MODIFY SUBPARTITION

MODIFY PARTITION

MODIFY SUBPARTITION

为列表分区增加值

n/a

n/a

MODIFY PARTITION...ADD VALUES

n/a

MODIFY SUBPARTITION ... ADD VALUES

为列表分区删除值

n/a

n/a

MODIFY PARTITION...DROP VALUES

n/a

MODIFY SUBPARTITION ... DROP VALUES

修改子分区模板

n/a

n/a

n/a

SET SUBPARTITION TEMPLATE

SET SUBPARTITION TEMPLATE

移动分区

MOVE PARTITION

MOVE PARTITION

MOVE PARTITION

MOVE SUBPARTITION

MOVE SUBPARTITION

重命名分区

RENAME PARTITION

RENAME PARTITION

RENAME PARTITION

RENAME PARTITION

RENAME SUBPARTITION

RENAME PARTITION

RENAME SUBPARTITION

分裂分区

SPLIT PARTITION

n/a

SPLIT PARTITION

SPLIT PARTITION

SPLIT PARTITION

SPLIT SUBPARTITION

截断分区

TRUNCATE PARTITION

TRUNCATE PARTITION

TRUNCATE PARTITION

TRUNCATE PARTITION

TRUNCATE SUBPARTITION

TRUNCATE PARTITION

TRUNCATE SUBPARTITION



1.增加分区:
如果是范围分区,新增的分区界限必须高于最后一个分区的限界。
ALTER TABLE PART_TAB1 ADD partition p8 values less than (to_date('2013-01-01','yyyy-mm-dd'));
增加列表分区
ALTER TABLE PART_TAB2 ADD partition pfz values ('FUZHOU');
增加哈希分区
ALTER TABLE PART_TAB3 ADD partition p6;

2.聚结分区
聚结分区只用于哈希分区,目的在于减少哈希分区的数量,当哈希分区聚结时,其内容会根据哈希算法分布到一个或多个其他分区之中,内容被重新分配之后,删除分区。
ALTER TABLE PART_TAB3 COALESCE PARTITION;

3.删除分区
删除一个分区,值得注意的是,哈希分区不能执行drop命令来删除分区,只能通过coalesce命令。
ALTER TABLE PART_TAB1 drop partition pmax UPDATE INDEXES;
ALTER TABLE PART_TAB5 drop subpartition P1_PSZ;

4.交换分区
交换分区,可以把一个分区的内容转换到一个非分区表中,也可以将一个非分区表的内容转换到分区表的一个分区中。需要压缩分区表时,采用交换分区的方式进行数据压缩,有更高的效率。
create table exchange_table_3 as select * from PART_TAB3 where 1=0;
ALTER TABLE PART_TAB3 EXCHANGE PARTITION p3 WITH TABLE exchange_table_3;

5.合并分区
合并分区可以将2个分区合并成一个分区。
合并分区不能用于哈希分区,其他分区方式都可以使用。
如果是范围分区,只能将相邻的2个分区合并,并且只能合并到下限的分区中。
ALTER TABLE PART_TAB1 MERGE PARTITIONS p7, p8 INTO PARTITION p8 UPDATE INDEXES;

6.修改默认属性
修改创建子分区的默认属性,只对以后添加的子分区有效。
修改以后创建子分区的默认表空间:
ALTER TABLE PART_TAB4 MODIFY DEFAULT ATTRIBUTES FOR PARTITION p1 TABLESPACE ldytbs;

7.修改分区实时属性
实时属性不能修改表空间的属性,修改实时表空间属性只能通过移动分区的方式。
ALTER TABLE PART_TAB1 MODIFY PARTITION p1 REBUILD UNUSABLE LOCAL INDEXES;

8.为列表分区增加值
为列表分区或子分区增加判断词
ALTER TABLE PART_TAB2 MODIFY PARTITION PSZ ADD VALUES ('SZ','NANSHAN','FUTIAN','YANTIAN','LUOHU');

9.为列表分区删除值
ALTER TABLE PART_TAB2 MODIFY PARTITION PSZ DROP VALUES ('NANSHAN','FUTIAN','YANTIAN','LUOHU');

10.修改子分区模板
ALTER TABLE PART_TAB4
SET SUBPARTITION TEMPLATE
(SUBPARTITION a TABLESPACE users,
 SUBPARTITION b TABLESPACE ldytbs,
 SUBPARTITION c TABLESPACE users,
 SUBPARTITION d TABLESPACE ldytbs
);

11.移动分区
移动分区,可以将一个分区移动到另一个表空间中,并且可以加上压缩,并行,不记录日志等参数。
alter table part_tab1 move partition p1 tablespace ldytbs nologging compress parallel (degree 2);

12.重命名分区
ALTER TABLE part_tab1 RENAME PARTITION p1 TO p001;

13.分裂分区
分裂分区,将一个分区分成2个分区,哈希分区模式下不能分裂分区,其余2种分区模式下,分裂分区的方式各有不同。
 
范围分区模式下,使用at关键字,在该值之前的分裂为一个分区,之后的为另一个分区,at之后的这个值需要在原分区的范围内。
ALTER TABLE part_tab1 SPLIT PARTITION
p8 at (TO_DATE('2012-12-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) INTO
(
PARTITION p7,
PARTITION p8
);
 
列表分区模式下,用values关键字,引用的值必须在现有分区内,分裂之后,包含这些值的内容在第一个分区内,其他的在第二个分区内。
ALTER TABLE part_tab2
   SPLIT PARTITION PSZ VALUES ('NANSHAN','FUTIAN','YANTIAN','LUOHU')
   INTO
    ( PARTITION PSZ_district
         TABLESPACE ldytbs,
      PARTITION PSZ)
   PARALLEL 4;

14.截断分区
可以像截断一张表一样,截断一个分区。
ALTER TABLE part_tab3 TRUNCATE PARTITION p3;


阅读(1002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~