您的位置:首页 > 其它

分区表及分区索引(2)--创建range分区

2011-11-02 10:41 483 查看
① 创建一个标准的range分区表:

SQL> create table t_range_part (id number(10),name varchar2(10))

2 partition by range(id)(

3 partition t_range_1 values less than (10)tablespace users,

4 partition t_range_2 values less than (20)tablespace users,

5 partition t_range_3 values less than (30)tablespace users,

6 partition t_range_max values less than (maxvalue) tablespace users

7 );

Table created

//user_part_tables - 记录分区的表的信息

//user_tab_partitions - 记录表的分区信息。

SQL> select table_name ,partitioning_type,subpartitioning_type,partition_count,partitioning_key_count

2 from user_part_tables

3 where table_name = 'T_RANGE_PART';

TABLE_NAME PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT PARTITIONING_KEY_COUNT

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

T_RANGE_PART RANGE NONE 4 1

SQL> select table_name, partition_name ,partition_position ,tablespace_name

2 from user_tab_partitions;

TABLE_NAME PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME

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

T_RANGE_PART T_RANGE_MAX 4 USERS

T_RANGE_PART T_RANGE_1 1 USERS

T_RANGE_PART T_RANGE_2 2 USERS

T_RANGE_PART T_RANGE_3 3 USERS

② 创建global索引range分区:

SQL> create index idx_range_part_id on t_range_part(id)

2 global partition by range(id)(

3 partition i_range_1 values less than(10) tablespace users,

4 partition i_range_2 values less than(40) tablespace users,

5 partition i_range_3 values less than(maxvalue) tablespace users);

Index created

查询索引的分区信息可以通过user_part_indexes、user_ind_partitions两个数据字典:

SQL> select index_name ,table_name ,partitioning_type, subpartitioning_type ,partition_count,locality ,def_tablespace_name

2 from user_part_indexes

3 where index_name = 'IDX_RANGE_PART_ID';

INDEX_NAME TABLE_NAME PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT LOCALITY DEF_TABLESPACE_NAME

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

IDX_RANGE_PART_ID T_RANGE_PART RANGE NONE 3 GLOBAL USERS

③ Local分区索引的创建最简单,例如:

仍然借助t_partition_range表来创建索引

--首先删除之前创建的global索引

SQL> drop index idx_range_part_id;

Index dropped

SQL> create index idx_range_part_id on t_range_part(id) local;

Index created

SQL> select index_name ,table_name ,partitioning_type,subpartitioning_type ,partition_count,partitioning_key_count,locality

2 from user_part_indexes;

INDEX_NAME TABLE_NAME PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT PARTITIONING_KEY_COUNT LOCALITY

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

IDX_RANGE_PART_ID T_RANGE_PART RANGE NONE 4 1 LOCAL

SQL> select index_name,partition_name,subpartition_count,partition_position,tablespace_name

2 from user_ind_partitions;

INDEX_NAME PARTITION_NAME SUBPARTITION_COUNT PARTITION_POSITION TABLESPACE_NAME

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

IDX_RANGE_PART_ID T_RANGE_2 0 2 USERS

IDX_RANGE_PART_ID T_RANGE_1 0 1 USERS

IDX_RANGE_PART_ID T_RANGE_3 0 3 USERS

IDX_RANGE_PART_ID T_RANGE_MAX 0 4 USERS

可以看出,local索引的分区完全继承表的分区的属性,包括分区类型,分区的范围值即不需指定也不能更改,这就是前面说的:local索引的分区维护完全依赖于其索引所在表。

不过呢分区名称,以及分区所在表空间等信息是可以自定义的,例如:

SQL> select partition_name,high_value,tablespace_name

2 from user_ind_partitions

3 order by partition_position;

PARTITION_NAME HIGH_VALUE TABLESPACE_NAME

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

T_RANGE_1 10 USERS

T_RANGE_2 20 USERS

T_RANGE_3 30 USERS

T_RANGE_MAX MAXVALUE USERS

检测:

##################################################################################################

SQL> insert into t_range_part values (1,'adf');

1 row inserted

SQL> insert into t_range_part values (11,'adfadsf');

1 row inserted

SQL> insert into t_range_part values (21,'asdfasfd');

1 row inserted

SQL> insert into t_range_part values (31,'asfasdf');

1 row inserted

SQL> insert into t_range_part values (41,'asdfasdf');

1 row inserted

SQL> select * from t_range_part partition(t_range_1);

ID NAME

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

1 adf

SQL> select * from t_range_part partition(t_range_2);

ID NAME

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

11 adfadsf

SQL> select * from t_range_part partition(t_range_3);

ID NAME

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

21 asdfasfd

SQL> select * from t_range_part partition(t_range_max);

ID NAME

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

31 asfasdf

41 asdfasdf

##################################################################################################

分区表及分区索引(1)--前言

分区表及分区索引(2)--创建range分区

分区表及分区索引(3)--创建hash分区

分区表及分区索引(4)--创建list分区

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

分区表及分区索引(6)--创建range-list组合分区

分区表及分区索引(7.1)--怎样管理

分区表及分区索引(7.2)--怎样管理

分区表及分区索引(8)--增加和收缩表分区

分区表及分区索引(9)--删除表分区

分区表及分区索引(10)--交换分区

分区表及分区索引(11)--合并表分区

分区表及分区索引(12)--修改list表分区

分区表及分区索引(13)--分隔表分区

分区表及分区索引(14)--截断、移动和重命名

分区表及分区索引(15)--修改表分区属性和模板

分区表及分区索引(16)--增加和删除索引分区

分区表及分区索引(17)--其它索引分区管理操作

分区表及分区索引(18)--结束语
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: