Oracle分区表 Partition Table的创建及管理是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、创建
分区表
分区表分为四类:1、范围分区表 2、列表分区表 3、哈希分区表 4、组合分区表下面分别创建四类分区表。
1、范围分区表2、列表分区表
3、哈希分区表
4、组合分区表
–注 subpartitions 2 并不是指定subpartition的个数一定为2,实际上每个分区的子分区个数可以不同。subpartitions 关键字的作用到底是什么?如果不指定subpartition的具体明细,则系统按照subpartitions的值指定subpartition的个数生成子分区,名称由系统定义 。二、增加分区
— range partitioned table
ALTER TABLE range_example ADD PARTITION part04 VALUES LESS THAN (TO_DATE(‘2008-10-1 00:00:00′,’yyyy-mm-dd hh34:mi:ss’));
–list partitioned table
ALTER TABLE list_example ADD PARTITION part04 VALUES (‘TE’);
–Adding Values for a List Partition
ALTER TABLE list_example MODIFY PARTITION part04 ADD VALUES(‘MIS’);
–Dropping Values from a List Partition
ALTER TABLE list_example MODIFY PARTITION part04 DROP VALUES(‘MIS’);
–hash partitioned table
ALTER TABLE hash_example ADD PARTITION part03;
–增加subpartition
ALTER TABLE range_hash_exampleMODIFYPARTITION
part_1 ADD SUBPARTITION part_1_sub_4;注:hash partitioned table 新增partition时,现有表的中所有data都有重新计算hash值,然后重新分配到分区中。所以被重新分配的分区的 indexes需要rebuild 。
三、删除分区
You can drop partitions from range, list, or composite range-list partitioned tables.For hash-partitioned tables, or hash subpartitions of range-hash partitioned tables, you must perform. a coalesce operation instead.
四、 分区合并
1. 合并父分区
如果省略update indexes子句的话,必须重建受影响的分区的index 。 ALTER TABLE range_example MODIFY PARTITION part02 REBUILD UNUSABLE LOCAL INDEXES;
2. 合并子分区
五、分割分区 hash partitions or subpartitions不能分割。如果指定的分割分区包含任何的数据时,对应的indexes可以被标识为UNUSABLE 。如果是一般的Heap Table,新的分区indexes为UNUSABLE ,所有gloabl indexes被标识为UNUSABLE 。如果是Index-organized table 新分区的indexes 为UNUSABLE,global indexes 仍然为USABLE。
1、range类型分区的分割
一个分区一次性只能分割成两个分区,at关键字后面指开发云主机域名定的值为第一个分区的range范围,默认为less than 。2、list类型分区的分割
3、Range_Hash类型分区的分割 新分区会对原有分区的subpartition做rehash的动作。如果在分割是指定subpartition的个数,则按新规则rehash subpartition,如果没有指定则保留原有subpartition的个数不变。 subpartitions 2 — 指定新分区的subpartition的个数,store in 子句指定subpartition存储的tablespace 。六、Exchanging Partitions可以将分区表转换成非分区表,或者几种不同分区表之间的转换。
如下:
这时,分区表hash_example中的part02分区的资料将被转移到hash_part02这个非分区表中。七、索引
在分区表上可以建立三种类型的索引:1、和普通表一样的全局索引。2、全局
分区索引
。3、本地分区索引。
它们之间的区别如下图示。以表range_example为例。
1.建立普通的索引
create index com_index_range_example_id on range_example(id);2.建立本地分区索引
create index local_index_range_example_id on range_example(id)local;3.建立全局分区索引
create index gidx_range_exampel_id on range_example(id)
GLOBAL partition by range(id)
(
part_01 values less than(1000),
part_02 values less than(MAXVALUE)
);
对于分区索引的删除,local index 不能指定分区名称,单独的删除分区索引。local index 对应的分区会伴随着data分区的删除而一起被删除。
global partition index 可以指定分区名称,删开发云主机域名除某一分区。但是有一点要注意,如果该分区不为空,则会导致更高一级的索引分区被置为UNUSABLE 。
ALTER INDEX gidx_range_exampel_id drop partition part_01 ; 此句将导致part_02 状态为UNUSABLE 。看完上述内容,你们掌握Ora开发云主机域名cle分区表 Partition Table的创建及管理是怎么样的的方法了吗?如果还想学到更活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!
本文从转载,原作者保留一切权利,若侵权请联系删除。
《Oracle分区表 Partition Table的创建及管理是怎么样的》来自互联网同行内容,若有侵权,请联系我们删除!
还没有评论,来说两句吧...