加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle 分区表中存在range-list表分区时遇到问题及解决办法

(2015-07-09 17:32:01)
标签:

表分区删除子分区

删除子分区

ora-14629

ora-14621

partition

分类: 技术类

Oracle 分区表中存在range-list表分区时遇到问题及解决办法

我们遇到的通常是list分区这种居多,我就不介绍了。

 

以下解决的是 复合分区情况

 表已存在,需要在范围分区中增加一个分区  我们常说的表分区为range这种

     下面是已有两个分区  T_QC, T_SC ,现在要增加一个T_RC

partition T_QC values less than ('SC')
    tablespace CUX_****
    pctfree 10
    initrans 1
    maxtrans 255
  (
    subpartition T_QC_1 values (1) tablespace CUX_****,
    subpartition T_QC_DEFAULT values (DEFAULT) tablespace CUX_****
  ),
  partition T_SC values less than ('SD')
    tablespace CUX_****
    pctfree 10
    initrans 1
    maxtrans 255
  (
    subpartition T_SC_1 values (1) tablespace CUX_****,
    subpartition T_SC_DEFAULT values (DEFAULT) tablespace CUX_****
  ),     

 a.将T_QC  进行拆分,拆分成 T_QC,T_RC

   ALTER TABLE CUX_LINES_XX
       SPLIT PARTITION T_QC AT ('T_RC') INTO
         (PARTITION T_QC tablespace CUX_****,
          PARTITION T_RC tablespace CUX_****);

   b.新生成T_RC中,会有T_QC一样的子分区,这些分区先删除,再增加新的子分区   

     注意:删除顺序是 先删除默认子分区,再删除其他子分区

     ALTER TABLE CUX_LINES_XX
                DROP SUBPARTITION T_RC_DEFAULT;
    ALTER TABLE CUX_LINES_XX
               DROP SUBPARTITION T_RC_1 ;   

  c.增加新的T_RC的子分区,顺序是先增加其他子分区,再增加默认子分区

   ALTER TABLE CUX_LINES_XX MODIFY PARTITION T_RC

            ADD SUBPARTITION T_RC_11 VALUES (11)  tablespace CUX_****; 
  ALTER TABLE CUX_LINES_XX MODIFY PARTITION T_RC

            ADD SUBPARTITION T_RC_12 VALUES (12)  tablespace CUX_****; 
  ALTER TABLE CUX_LINES_XX MODIFY PARTITION T_RC

            ADD SUBPARTITION T_RC_DEFAULT VALUES  (DEFAULT)  tablespace CUX_****; 

   

ORA-14621: cannot add subpartition when DEFAULT subpartition exists


Cause: An ADD SUBPARTITION operation cannot be executed when a subpartition with DEFAULT values exists


Action: Issue a SPLIT of the DEFAULT subpartition instead

以上问题 出现在新增子分区时:
分区表中有子分区,而且存在默认子分区时,需要先删除默认子分区,再增加新的子分区,最后再把增加默认子分区。


ORA-14629:cannot drop the only subpartition of a partition

以上问题出现在删除子分区时:
删除子分区时 如果有默认子分区(Deafult)时,先删除DEFAULT;
再删除其他子分区

 

经实验得出结论:

删除子分区顺序是 先删除默认子分区,再删除其他子分区
增加子分区顺序是 先增加其他子分区,再增加默认子分区

 

--刘轶鹤

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有