文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何进行分区表split操作及maxvalue处理

2023-06-06 04:08

关注

这篇文章将为大家详细讲解有关如何进行分区表split操作及maxvalue处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

CREATE TABLE DFMS.WIP_D_WO_DETAIL
(
  WORK_ORDER          VARCHAR2(25 CHAR)         NOT NULL,
  PART_NO             VARCHAR2(35 BYTE)         NOT NULL,
  PART_REV            VARCHAR2(10 BYTE)         DEFAULT 'N/A'                 NOT NULL,
  ALT_FLAG            VARCHAR2(1 BYTE)          DEFAULT '0'                   NOT NULL,
  SUBSTITUTE_PN       VARCHAR2(35 BYTE),
  UNIT_QTY            NUMBER                    DEFAULT 0                     NOT NULL,
  SOURCE_DEPT         VARCHAR2(5 BYTE)          DEFAULT 'SFC'                 NOT NULL,
  CREATOR             VARCHAR2(20 BYTE)         NOT NULL,
  CREATE_DATE         DATE                      DEFAULT SYSDATE,
  UPDATER             VARCHAR2(20 BYTE),
  UPDATE_DATE         DATE,
  SCH_PART_NO         VARCHAR2(35 BYTE),
  MAIN_WHID           VARCHAR2(10 BYTE),
  REPLACE_GROUP       VARCHAR2(50 BYTE)         NOT NULL,
  MOD_NO              VARCHAR2(20 BYTE),
  PHANTOM_FLAG        VARCHAR2(10 BYTE)
)
TABLESPACE PART_D_TS1
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
LOGGING
PARTITION BY RANGE (CREATE_DATE)

  PARTITION P200907 VALUES LESS THAN (TO_DATE(' 2009-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201001 VALUES LESS THAN (TO_DATE(' 2010-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201007 VALUES LESS THAN (TO_DATE(' 2010-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201101 VALUES LESS THAN (TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201107 VALUES LESS THAN (TO_DATE(' 2011-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201201 VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201207 VALUES LESS THAN (TO_DATE(' 2012-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION P201301 VALUES LESS THAN (TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

'NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               ), 
  PARTITION PMAX VALUES LESS THAN (MAXVALUE)
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING
ENABLE ROW MOVEMENT; 


假设没有maxvalue部分,那么加入分区: 


ALTER TABLE DFMS.WIP_D_WO_DETAIL
ADD PARTITION P201307 VALUES LESS THAN (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

NLS_CALENDAR=GREGORIAN'))
    LOGGING
    NOCOMPRESS
    TABLESPACE PART_D_TS1
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          50M
                NEXT             50M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )  ;

这里有maxvalue部分,那么加入分区需要split : 

备注: 
split partition时,根据split point原来的partition分裂成两个partition。
如果其中一个partition是空的,则不需要move原来的partition,也不需要rebuild
index,这种我们称之为fast split。

不过如果在split的时候指定了tablespace,即使其中一个partition是空的,而且该
tablespace与parent partition的tablespace不同,oracle会move整个partition到
新的tablespace中。因为这个tablespace参数,导致了原来的fast split不成功,而
需要move segment和rebuild index。

ALTER TABLE DFMS.WIP_D_WO_DETAIL
SPLIT PARTITION  PMAX  AT (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', NLS_CALENDAR=GREGORIAN'))
INTO  (PARTITION  P201307  TABLESPACE PART_D_TS1, PARTITION  PMAX  TABLESPACE  PART_D_TS1) ;

如果你需要取消maxvalue部分,那么split几部分后,查看最后一部分是否有值,如果没有,直接
drop掉最后split出去的那部分。 然后就可以直接add partition 了。

ALTER TABLE DFMS.WIP_D_WO_DETAIL
SPLIT PARTITION  PMAX  AT (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', NLS_CALENDAR=GREGORIAN'))
INTO  (PARTITION  P201307  TABLESPACE PART_D_TS1, PARTITION  P2014  TABLESPACE  PART_D_TS1) ;

ALTER TABLE DFMS.WIP_D_WO_DETAIL
SPLIT PARTITION  P2014  AT (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', NLS_CALENDAR=GREGORIAN'))
INTO  (PARTITION  P201401  TABLESPACE PART_D_TS1, PARTITION  P201407  TABLESPACE  PART_D_TS1) ;

ALTER TABLE DFMS.WIP_D_WO_DETAIL
SPLIT PARTITION  P201407  AT (TO_DATE(' 2014-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', NLS_CALENDAR=GREGORIAN'))
INTO  (PARTITION  P201407  TABLESPACE PART_D_TS1, PARTITION  P201501  TABLESPACE  PART_D_TS1) ;

ALTER TABLE DFMS.WIP_D_WO_DETAIL DROP PARTITION  P201501  ;

然后就可以类似没有设置maxvalue一样加入后面的partiton .

ALTER TABLE DFMS.WIP_D_WO_DETAIL
ADD PARTITION P201501 VALUES LESS THAN (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

NLS_CALENDAR=GREGORIAN')) ;

ALTER TABLE DFMS.WIP_D_WO_DETAIL
ADD PARTITION P201507 VALUES LESS THAN (TO_DATE(' 2015-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS',

NLS_CALENDAR=GREGORIAN')) ;

..... 


如果在split的时候将tablespace更换了,那么需要rebuild index .

下面的语句用于rebuild local index partitions或子分区
(子分区一般指range-hash等组合分区中的子分区) : 
ALTER INDEX ... REBUILD PARTITION/SUBPARTITION


ALTER TABLE ... MODIFY PARTITION/SUBPARTITION ... REBUILD UNUSABLE LOCAL INDEXES
这个语句找出所有的unusable的index, 然后rebuild他们。

关于如何进行分区表split操作及maxvalue处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯