oralce水平分表现有表再进行拆分

   接上面一篇,发现按照上面水平拆表把表按照年存储到每个分区表中。由于业务推广后按照年分表数据量还是很大。那么我们考虑能不能再年表中在进行拆分。

   下面介绍一下拆分步骤。

    原表结构(只看分区情况):

 



从上面图我们可以看出如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);

查询到数据,说明我们分区表建立成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle拆分函数是指可以将字符串按照指定的隔符进行拆分,并将拆分结果返回的函数。在Oracle中,可以通过创建自定义函数来实现字符串拆分。 在引用和引用中提到了两个示例函数:f_split和strArray,其中f_split是一个可以接收两个参数(待拆分的字符串和隔符)的函数,而strArray是一个自定义的类型,用于存储拆分的结果。 示例的函数定义可以如下所示: CREATE OR REPLACE FUNCTION f_split(p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN strArray IS l_result strArray := strArray(); BEGIN -- 在这里实现字符串的拆分逻辑,将拆分的结果添加到l_result中 -- 返回拆分结果 RETURN l_result; END; 使用这个拆分函数,可以通过调用f_split函数并传入待拆分的字符串和隔符来获取拆分结果。返回的结果是一个strArray类型的,可以使用SELECT语句查询或者在其他PL/SQL块中使用。 请注意,以上只是一个示例函数的定义,实际的拆分函数的实现可能会根据需求有所不同。具体的拆分逻辑可以根据实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Oracle按指定字符拆分字符串-split函数](https://blog.csdn.net/fjw044586/article/details/103457983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值