分割槽表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他們。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2150430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分割槽表truncate慢處理
- mysql分割槽表佔用大量容量處理(最佳化)及歸檔分割槽表MySql
- Oracle資料庫分割槽表SPLIT操作導致歸檔瘋漲Oracle資料庫
- MySQL分表後原分割槽表處理方案MySql
- Spark操作Hive分割槽表SparkHive
- split 分割槽的簡單研究
- oracle分割槽表和分割槽表exchangeOracle
- MySql資料分割槽操作之新增分割槽操作MySql
- Oracle vs PostgreSQL DBA(13)- 拆分(split)分割槽OracleSQL
- oracle分割槽表和非分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- PG的非分割槽表線上轉分割槽表
- win10刪除系統保留分割槽如何操作_win10刪除系統保留分割槽怎麼處理Win10
- 【MYSQL】 分割槽表MySql
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 移動分割槽表和分割槽索引的表空間索引
- oracle分割槽表的分類及測試Oracle
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Linux 新增LVM分割槽及LVM分割槽擴容LinuxLVM
- 對Oracle分割槽表進行表空間遷移並處理ORA-14511問題Oracle
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- MySQL 分割槽表探索MySql
- 分割槽表-實戰
- index_oracle索引梳理系列及分割槽表梳理IndexOracle索引
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 處理動態分割槽時出現的異常
- 【Linux】MBR磁碟分割槽表只能有四個分割槽?Linux
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- 怎麼備份分割槽表?還原備份表怎麼操作?
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- 分割槽表之自動增加分割槽(11G)