admin管理员组

文章数量:1530922

2024年7月13日发(作者:)

DB2分区表增加分区

DB2分区表增加分区

最近,需要在DB2的分区表中增加新的分区,用于存储数据,因

此,就研究了DB2表的分区机制。现在总结,实现的方式共有三种,

分别是:

1)、创建临时表,将原表数据导入临时表,之后将原表重建,扩

大分区;

2)、通过ALTER TABLE TAB_NAME ADD PARTITION,为表增

加分区;

3)、创建临时分区表,向临时分区表中导入数据,之后将临时分

区表设置为主表的一个分区。

下面将分别说明三种方式的具体实现:

前提:原分区表PART_MAIN,建表SQL为:

[sql]

CREATE TABLE PART_MAIN(

P_ID VARCHAR(10),

P_DATE DATE

)

PARTITION BY RANGE(P_DATE) (

PARTITION OTHERS STARTING MINVALUE ENDING '2012-

03-31',

PARTITION P201204 STARTING '2012-04-01' ENDING '2012-

04-30',

PARTITION P201205 STARTING '2012-05-01' ENDING '2012-

05-31',

PARTITION P201206 STARTING '2012-06-01' ENDING '2012-

06-30'

)

;

需要为PART_MAIN表,增加2012-12-01--2012-12-31的数据

分区。

方法一:

a、创建临时表

[sql]

CREATE TABLE

TMP_PART_MAIN LIKE PART_MAIN;

b、将数据导入临时表中

[sql]

INSERT INTO

TMP_PART_MAIN SELECT *

FROM PART_MAIN;

c、重建原表

[sql]

[sql]

CREATE TABLE PART_MAIN(

P_ID VARCHAR(10),

P_DATE DATE

)

PARTITION BY RANGE(P_DATE) (

PARTITION OTHERS STARTING MINVALUE ENDING '2012-

03-31',

PARTITION P201204 STARTING '2012-04-01' ENDING '2012-

04-30',

PARTITION P201205 STARTING '2012-05-01' ENDING '2012-

05-31',

PARTITION P201206 STARTING '2012-06-01' ENDING '2012-

06-30',

style="font-size:14px;">DROP TABLE

PART_MAIN;

PARTITION P201212 STARTING '2012-12-01' ENDING '2012-

12-31'

)

;

d、将数据从临时表导入原表中

[sql]

INSERT INTO PART_MAIN

SELECT * FROM TMP_PART_MAIN;

注:该方法是最简单的一种实现方式,不需要掌握DB2分区知识,

就可以实现,对于老鸟来说,这种方式是不屑使用的。下面的方法将

是技术提升阶段。

方法二:

a、为表增加分区

[sql]

ALTER TABLE PART_MAIN ADD PARTITION P201212

STARTING '2012-12-01' ENDING '2012-12-31'

;

b、增加分区OK,插入数据即可

注:该方法是最直接的,只要记住ALTER TABLE TAB_NAME

ADD PARTITION命令就OK。

方法三:

a、创建临时分区表

[sql]

CREATE TABLE PART_OTHER (

P_ID VARCHAR(10),

P_DATE DATE

)

PARTITION BY RANGE(P_DATE) (

PARTITION P201212 STARTING '2012-12-01' ENDING '2012-

12-31'

)

;

b、往临时表中增加数据(此步可以省略,在最后一步执行)

c、将临时分区表设为原表的一个分区

[sql]

ALTER TABLE PART_MAIN ATTACH

PARTITION P201212 STARTING '2012-12-01' ENDING '2012-

12-31'

FROM PART_OTHER

;

注:此命令执行后,临时分区表PART_OTHER,将不以表的方式

存在,而是作为PART_MAIN表的一个分区。

d、为原表新增加的分区,设置访问权限

[sql]

SET INTEGRITY FOR PART_MAIN

ALLOW WRITE ACCESS

IMMEDIATE CHECKED

;

OK,分区增加完成,可以往新分区中增加数据了。

注:该方法实现起来过于繁琐,建议了解就好。

本文标签: 分区分区表增加