Oralce水平分表

2014-11-24 18:33:12 · 作者: · 浏览: 0

oracle 10 g 中提供下面三中分区:


1)范围分区(Range partition)


2) 哈希分区(Hash partition)


3)列表分区(List partition)


由于水平有限下面重点介绍范围分区


范围分区,顾名思义,就是根据表的某个字段的值,以固定的一个范围作为一个分区来划分数据


1.1可以根据序号分区建表


create table test1


从上面我们看出按照序号分区1-30000000数据存储在part_01分区表中,30000000-60000000数据存储在第part_02分区表中。这样就达到水平拆分表的目的


1.2可以根据日期分区建表


create table test2


从上面建表语句我们可以看到通过时间按照年存储数据表。


通过以上方式以上方式我们可以将数据比较大的表根据ID 时间自动拆分的其他分区表中。


以上方式在系统设计表结构的时候就考虑到分表情况,实际工作中由于对系统数据量的遇见不足,没有在设计表的时候考虑的表水平切分情况。那么我们有没有办法对现有表进行拆分和改造呢。答案是肯定的。


现在对表WLKP_FP_KJ进行扩展改造


1.创建新表空间


CREATE TABLESPACE "WLKP_FP_DATA_2010"


表空间创建代码


这里我们新建WLKP_FP_DATA_2010表空间,按照年来存储扩展WLKP_FP_KJ表当然也可以建立2011、2012、2013...表空间存储未来的数据


2创建新表WLKP_FP_KJ_TEST


表结构按照1.2日期分区建表


3.新表建立后,复制老表数据


insert into wlkp_fp_kj_test select* from wlkp_fp_kj


4.将老表wlkp_fp_kj 删除


5.重命名wlkp_fp_kj_test 为wlkp_fp_kj


这样通过以上方式我们可以讲原来wlkp_fp_kj 按照时间水平分割存储到不同的表空间了.


通过分区表查询数据分别存储在哪个分区表中.


select * from WLKP_FP_KJ partition(WLKP_FP_DATA_2011) ;