接上面一篇,发现按照上面水平拆表把表按照年存储到每个分区表中。由于业务推广后按照年分表数据量还是很大。那么我们考虑能不能再年表中在进行拆分。
下面介绍一下拆分步骤。
原表结构(只看分区情况):
从上面图我们可以看出如WLKP_FP_DATA_2012 分区存储在表空间WLKP_FP_DATA_2012里面
那么时间过半了我们统计半年数据发现WLKP_FP_DATA_2012 分区表数据也很多
我们考虑将WLKP_FP_DATA_2012 按照季度拆分
alter table WLKP_FP_KJ split partition WLKP_FP_DATA_2012 at (to_date('2012-04-01','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2012_1,partition WLKP_FP_DATA_2012); alter table WLKP_FP_KJ split partition WLKP_FP_DATA_2012 at (to_date('2012-07-01','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2012_2,partition WLKP_FP_DATA_2012); alter table WLKP_FP_KJ split partition WLKP_FP_DATA_2012 at (to_date('2012-10-01','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2012_3,partition WLKP_FP_DATA_2012); alter table WLKP_FP_KJ split partition WLKP_FP_DATA_2012 at (to_date('2012-12-31','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2012_4,partition WLKP_FP_DATA_2012);
执行以上语句将WLKP_FP_DATA_2012 按照季度拆分四个子分区表中WLKP_FP_DATA_2012_1、WLKP_FP_DATA_2012_2、WLKP_FP_DATA_2012_3、WLKP_FP_DATA_2012_4
注:最后一个分区时间为什么是2012-12-31呢因为上面拆分WLKP_FP_DATA_2012整年的截止时间是2013-01-01
如果时间是2013-01-01会报错
拆分后的分区如下:
和上面对比我可以看到我们将WLKP_FP_DATA_2012 按照季度拆分出子的分区表,注意以上还是在当前WLKP_FP_DATA_2012表空间下面拆分的
通过上面截图我们看到该分区表只扩展到2013年,那么2014年呢2015年呢我们怎么办呢?
我们同样可以扩展。
1.新建2014年、2015年表空间
CREATE TABLESPACE "WLKP_FP_DATA_2014"
LOGGING DATAFILE 'E:\oracle\product\10.2.0\oradata\wlkp\WLKP_FP_DATA_2014.ORA' SIZE 5M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; commit; CREATE TABLESPACE "WLKP_FP_DATA_2015" LOGGING DATAFILE 'E:\oracle\product\10.2.0\oradata\wlkp\WLKP_FP_DATA_2015.ORA' SIZE 5M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; commit;
2.执行如下修改表结构语句
alter table WLKP_FP_KJ split partition WLKP_FP_DATA_MAXVALUE at (to_date('2015-01-01','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2014 tablespace WLKP_FP_DATA_2014,partition WLKP_FP_DATA_MAXVALUE);
alter table WLKP_FP_KJ split partition WLKP_FP_DATA_MAXVALUE at (to_date('2016-01-01','yyyy-mm-dd')) into (partition WLKP_FP_DATA_2015 tablespace WLKP_FP_DATA_2015,partition WLKP_FP_DATA_MAXVALUE);
3.查看新生成表结构
我们可以通过以上截图看到新扩展的2014、2015年分区表建立成功同时2014、2015建立到另外的表空间了见绿色部分
通过以上步骤我们重新现有表再进行拆分。
注:通过以上步骤执行后表中的索引要重新建立否则以前老的索引要失效的
重新建立表WLKP_FP_KJ索引
alter index PK_WLKP_FP_FPHM unusable
alter index PK_WLKP_FP_FPHM rebuild tablespace WLKPTABLE; alter index PK_WLKP_FP_NSRSBH_NEW unusable alter index PK_WLKP_FP_NSRSBH_NEW rebuild tablespace WLKPTABLE; alter index PK_WLKP_FP_SWJG_DM_NEW unusable alter index PK_WLKP_FP_SWJG_DM_NEW rebuild tablespace WLKPTABLE; alter index SYS_C005998 unusable alter index SYS_C005998 rebuild tablespace WLKPTABLE;
下面我们造一条记录验证是否插入到指定的表分区 中
输入SQL 查询
select count(*) from WLKP_FP_KJ partition(WLKP_FP_DATA_2012);
查询到数据,说明我们分区表建立成功。