分区表及分区索引(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)--结束语
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)--结束语
相关文章推荐
- Oracle将已有数据的表改为分区表【创建表分区、索引分区】
- 分区表和分区索引的创建案例
- oracle10G分区的创建与维护Oracle分区表和本地索引
- 创建空间数据分区表及分区索引步骤(oracle 10g 且关键字非字符型)
- oracle10G分区的创建与维护Oracle分区表和本地索引
- 分区表及分区索引(3)--创建hash分区
- 深入学习Oracle分区表及分区索引(4) --创建list分区
- 分区表及分区索引(5)--创建range-hash组合分区
- 深入学习分区表及分区索引(5)--创建range-hash组合分区
- 分区表及分区索引创建示例
- 创建分区表part_emp,再创建分区索引
- 分区表及分区索引(4)--创建list分区
- 深入学习分区表及分区索引(5)--创建range-hash组合分区(续)
- 分区表及分区索引(6)--创建range-list组合分区
- 深入学习分区表及分区索引(6)--创建range-list组合分区
- oracle12c 针对分区表的部分分区创建索引
- SQL Server ->> 分区表上创建唯一分区索引
- PLSQL_Oracle分区表和相应的分区索引管理和使用(案例)(创建交易表等大表时进行分区提高效率)
- 分区表、分区索引2(再谈)