範圍分割槽表和INTERVAL分割槽表對於SPLIT分割槽的區別
範圍分割槽表和INTERVAL分割槽表是可以相互轉化的,不過二者還是有所區別的。比如在SPLIT分割槽的時候,範圍分割槽表沒有限制,而INTERVAL分割槽表則可能報錯。
首先看範圍分割槽的例子:
SQL> CREATE TABLE T_PART_RANGE
2 (ID NUMBER,
3 NAME VARCHAR2(30),
4 CREATE_DATE DATE)
5 PARTITION BY RANGE (CREATE_DATE)
6 (PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1', 'YYYY-MM')),
7 PARTITION P2 VALUES LESS THAN (TO_DATE('2009-5', 'YYYY-MM')),
8 PARTITION P3 VALUES LESS THAN (TO_DATE('2009-9', 'YYYY-MM')));
表已建立。
SQL> ALTER TABLE T_PART_RANGE
2 SPLIT PARTITION P3
3 AT (TO_DATE('2009-7-30', 'YYYY-MM-DD'))
4 INTO (PARTITION P3, PARTITION P4);
表已更改。
SQL> SELECT PARTITION_NAME, HIGH_VALUE
2 FROM USER_TAB_PARTITIONS
3 WHERE TABLE_NAME = 'T_PART_RANGE'
4 ORDER BY 1;
PARTITION_NAME HIGH_VALUE
-------------- ----------------------------------------------------------------------------------
P1 TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P2 TO_DATE(' 2009-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P3 TO_DATE(' 2009-07-30 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P4 TO_DATE(' 2009-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
同樣的操作,在INTERVAL分割槽表上執行就會報錯:
SQL> CREATE TABLE T_PART_INTER
2 (ID NUMBER,
3 NAME VARCHAR2(30),
4 CREATE_DATE DATE)
5 PARTITION BY RANGE (CREATE_DATE)
6 INTERVAL (INTERVAL '4' MONTH)
7 (PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1', 'YYYY-MM')),
8 PARTITION P2 VALUES LESS THAN (TO_DATE('2009-5', 'YYYY-MM')));
表已建立。
SQL> INSERT INTO T_PART_INTER
2 VALUES (1, 'TEST', TO_DATE('2009-8', 'YYYY-MM'));
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT PARTITION_NAME, HIGH_VALUE
2 FROM USER_TAB_PARTITIONS
3 WHERE TABLE_NAME = 'T_PART_INTER'
4 ORDER BY 1;
PARTITION_NAME HIGH_VALUE
-------------- ----------------------------------------------------------------------------------
P1 TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P2 TO_DATE(' 2009-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P96 TO_DATE(' 2009-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SQL> ALTER TABLE T_PART_RANGE
2 SPLIT PARTITION FOR(TO_DATE('2009-8', 'YYYY-MM'))
3 AT (TO_DATE('2009-7-30', 'YYYY-MM-DD'))
4 INTO (PARTITION P3, PARTITION P4);
ALTER TABLE T_PART_RANGE
*
第 1 行出現錯誤:
ORA-14080: 無法按指定的上限來分割分割槽
顯然導致問題的原因是由於SPLIT分割槽操作後,INTERVAL分割槽會根據SPLIT的日期作為基準時間,在此基礎上進行INTERVAL遞增,因此大於28日的日誌使用INTERVAL則會導致在2月的時候出錯,所以Oracle禁止大於28日的日期作為INTERVAL MONTH的基礎分割槽。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-628939/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用split對分割槽表再分割槽
- INTERVAL分割槽表鎖分割槽操作
- ORACLE 11g 範圍分割槽錶轉換INTERVAL分割槽表Oracle
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- oracle分割槽表和分割槽表exchangeOracle
- ORACLE 11G分割槽表新功能:列表--範圍分割槽Oracle
- oracle分割槽表和非分割槽表exchangeOracle
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- ORACLE 範圍分割槽 partition-range分割槽Oracle
- 如何查詢分割槽表的分割槽及子分割槽
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- Oracle分割槽表及分割槽索引Oracle索引
- 全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響(1)索引
- 關於分割槽表和分割槽索引(About Partitioned Tables and Indexes)索引Index
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 全面學習分割槽表及分割槽索引(15)--修改表分割槽屬性和模板索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- hive 分割槽表和分桶表區別Hive
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- 分割槽表及分割槽索引建立示例索引
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- MySQL分割槽表的分割槽原理和優缺點MySql
- DATE型別INTERVAL分割槽型別
- 對刪除分割槽的分割槽表執行TSPITR
- 對分割槽表的部分分割槽執行TSPITR
- Oracle11g INTERVAL分割槽新增分割槽策略Oracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL