全面学习分区表及分区索引(5)--创建range-hash组合分区

创建range-hash组合分区

组合分区相对于普通分区,语法上稍稍复杂了一些,但也正因如此,其子分区的创建可以非常灵活,下面分别举几个例子(注:仅示例,并非穷举所有形式)

[@more@]

创建range-hash组合分区

语法如下:图[composite_partitioning.gif]

7607759_200805130914401.gif

需要我们指定的有:

l column_list:分区依赖列(支持多个,中间以逗号分隔);

l subpartition:子分区方式,有两处:

n Subpartition_by_list:语法与list分区完全相同,只不过把关键字partition换成subpartition

n Subpartition_by_hash:语法与hash分区完全相同,只不过把关键字partition换成subpartition

l partition:分区名称;

l range_partition_values_clause:与range分区范围值的语法;

l tablespace_clause:分区的存储属性,例如所在表空间等属性(可为空),默认继承基表所在表空间的属性。

组合分区相对于普通分区,语法上稍稍复杂了一些,但也正因如此,其子分区的创建可以非常灵活,下面分别举几个例子(注:仅示例,并非穷举所有形式)

① 为所有分区各创建4个hash子分区

JSSWEB> create table t_partition_rh (id number,name varchar2(50))

2 partition by range(id) subpartition by hash(name)

3 subpartitions 4 store in (tbspart01, tbspart02, tbspart03,tbspart04)(

4 partition t_r_p1 values less than (10) tablespace tbspart01,

5 partition t_r_p2 values less than (20) tablespace tbspart02,

6 partition t_r_p3 values less than (30) tablespace tbspart03,

7 partition t_r_pd values less than (maxvalue) tablespace tbspart04);

表已创建。

JSSWEB> select partitioning_type,subpartitioning_type,partition_count,def_subpartition_count

2 From user_part_tables where table_name='T_PARTITION_RH';

PARTITI SUBPART PARTITION_COUNT DEF_SUBPARTITION_COUNT

------- ------- --------------- ----------------------

RANGE HASH 4 4

JSSWEB> select partition_name,subpartition_count,high_value

2 from user_tab_partitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_COUNT HIGH_VALUE

--------------- ------------------ ----------

T_R_P2 4 20

T_R_P3 4 30

T_R_PD 4 MAXVALUE

T_R_P1 4 10

JSSWEB> select partition_name,subpartition_name,tablespace_name

2 from user_tab_subpartitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME

--------------- ------------------------------ --------------------

T_R_P2 SYS_SUBP140 TBSPART02

T_R_P2 SYS_SUBP139 TBSPART02

T_R_P2 SYS_SUBP138 TBSPART02

T_R_P2 SYS_SUBP137 TBSPART02

T_R_P3 SYS_SUBP144 TBSPART03

T_R_P3 SYS_SUBP143 TBSPART03

T_R_P3 SYS_SUBP142 TBSPART03

T_R_P3 SYS_SUBP141 TBSPART03

T_R_PD SYS_SUBP148 TBSPART04

T_R_PD SYS_SUBP147 TBSPART04

T_R_PD SYS_SUBP146 TBSPART04

T_R_PD SYS_SUBP145 TBSPART04

T_R_P1 SYS_SUBP133 TBSPART01

T_R_P1 SYS_SUBP136 TBSPART01

T_R_P1 SYS_SUBP135 TBSPART01

T_R_P1 SYS_SUBP134 TBSPART01

已选择16行。

这里我们要学到一个新的数据字典:user_tab_subpartitions,用于查询表的子分区信息。

② 对某个分区创建hash子分区

JSSWEB> create table t_partition_rh (id number,name varchar2(50))

2 partition by range(id) subpartition by hash(name)(

3 partition t_r_p1 values less than (10) tablespace tbspart01,

4 partition t_r_p2 values less than (20) tablespace tbspart02,

5 partition t_r_p3 values less than (30) tablespace tbspart03

6 (subpartition t_r_p3_h1 tablespace tbspart01,

7 subpartition t_r_p3_h2 tablespace tbspart02,

8 subpartition t_r_p3_h3 tablespace tbspart03),

9 partition t_r_pd values less than (maxvalue) tablespace tbspart04);

表已创建。

JSSWEB> select partitioning_type,subpartitioning_type,partition_count,def_subpartition_count

2 From user_part_tables where table_name='T_PARTITION_RH';

PARTITI SUBPART PARTITION_COUNT DEF_SUBPARTITION_COUNT

------- ------- --------------- ----------------------

RANGE HASH 4 1

JSSWEB> select partition_name,subpartition_count,high_value

2 from user_tab_partitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_COUNT HIGH_VALUE

--------------- ------------------ ----------

T_R_P1 1 10

T_R_P2 1 20

T_R_P3 3 30

T_R_PD 1 MAXVALUE

JSSWEB> select partition_name,subpartition_name,tablespace_name

2 from user_tab_subpartitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME

--------------- ------------------------------ --------------------

T_R_P1 SYS_SUBP149 TBSPART01

T_R_P2 SYS_SUBP150 TBSPART02

T_R_P3 T_R_P3_H3 TBSPART03

T_R_P3 T_R_P3_H2 TBSPART02

T_R_P3 T_R_P3_H1 TBSPART01

T_R_PD SYS_SUBP151 TBSPART04

已选择6行。

当然,还可以给各个分区指定不同的子分区

JSSWEB> create table t_partition_rh (id number,name varchar2(50))

2 partition by range(id) subpartition by hash(name)(

3 partition t_r_p1 values less than (10) tablespace tbspart01,

4 partition t_r_p2 values less than (20) tablespace tbspart02

5 (subpartition t_r_p2_h1 tablespace tbspart01,

6 subpartition t_r_p2_h2 tablespace tbspart02),

7 partition t_r_p3 values less than (30) tablespace tbspart03

8 subpartitions 3 store in (tbspart01,tbspart02,tbspart03),

9 partition t_r_pd values less than (maxvalue) tablespace tbspart04

10 (subpartition t_r_p3_h1 tablespace tbspart01,

11 subpartition t_r_p3_h2 tablespace tbspart02,

12 subpartition t_r_p3_h3 tablespace tbspart03)

13 );

表已创建。

JSSWEB> select partitioning_type,subpartitioning_type,partition_count,def_subpartition_count

2 From user_part_tables where table_name='T_PARTITION_RH';

PARTITI SUBPART PARTITION_COUNT DEF_SUBPARTITION_COUNT

------- ------- --------------- ----------------------

RANGE HASH 4 1

JSSWEB> select partition_name,subpartition_count,high_value

2 from user_tab_partitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_COUNT HIGH_VALUE

--------------- ------------------ ----------

T_R_P1 1 10

T_R_P2 2 20

T_R_P3 3 30

T_R_PD 3 MAXVALUE

JSSWEB> select partition_name,subpartition_name,tablespace_name

2 from user_tab_subpartitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME

--------------- ------------------------------ --------------------

T_R_P1 SYS_SUBP152 TBSPART01

T_R_P2 T_R_P2_H2 TBSPART02

T_R_P2 T_R_P2_H1 TBSPART01

T_R_P3 SYS_SUBP155 TBSPART03

T_R_P3 SYS_SUBP154 TBSPART02

T_R_P3 SYS_SUBP153 TBSPART01

T_R_PD T_R_P3_H3 TBSPART03

T_R_PD T_R_P3_H2 TBSPART02

T_R_PD T_R_P3_H1 TBSPART01

已选择9行。

提示:由上两例可以看出,未显式指定子分区的分区,系统会自动创建一个子分区。

③ 分区模板的应用

oracle还提供了一种称为分区模板的功能,在指定子分区信赖列之后,制订子分区的存储模板,各个分区即会按照子分区模式创建子分区,例如:

JSSWEB> create table t_partition_rh (id number,name varchar2(50))

2 partition by range(id) subpartition by hash(name)

3 subpartition template (

4 subpartition h1 tablespace tbspart01,

5 subpartition h2 tablespace tbspart02,

6 subpartition h3 tablespace tbspart03,

7 subpartition h4 tablespace tbspart04)(

8 partition t_r_p1 values less than (10) tablespace tbspart01,

9 partition t_r_p2 values less than (20) tablespace tbspart02,

10 partition t_r_p3 values less than (30) tablespace tbspart03,

11 partition t_r_pd values less than (maxvalue) tablespace tbspart04);

表已创建。

JSSWEB> select partition_name,subpartition_name,tablespace_name

2 from user_tab_subpartitions where table_name='T_PARTITION_RH';

PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME

--------------- ------------------------------ --------------------

T_R_P1 T_R_P1_H4 TBSPART01

T_R_P1 T_R_P1_H3 TBSPART01

T_R_P1 T_R_P1_H2 TBSPART01

T_R_P1 T_R_P1_H1 TBSPART01

T_R_P2 T_R_P2_H4 TBSPART02

T_R_P2 T_R_P2_H3 TBSPART02

T_R_P2 T_R_P2_H2 TBSPART02

T_R_P2 T_R_P2_H1 TBSPART02

T_R_P3 T_R_P3_H4 TBSPART03

T_R_P3 T_R_P3_H3 TBSPART03

T_R_P3 T_R_P3_H2 TBSPART03

T_R_P3 T_R_P3_H1 TBSPART03

T_R_PD T_R_PD_H4 TBSPART04

T_R_PD T_R_PD_H3 TBSPART04

T_R_PD T_R_PD_H2 TBSPART04

T_R_PD T_R_PD_H1 TBSPART04

已选择16行。

==================================

查看前面的连载:

全面学习分区表及分区索引(4)--创建list分区

全面学习分区表及分区索引(3)--创建hash分区

全面学习分区表及分区索引(2)--创建range分区

全面学习分区表及分区索引(1)--前言

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-1003964/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-1003964/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值