DM達夢數據庫 創建間隔(interval)分區

oracle11g中引入了間隔分區的功能,通過該功能,可以在輸入相應分區的數據時自動創建相應的分區。

在達夢中我們也可以使用間隔分區,不過需要注意的是達夢中的間隔分區使用有以下限制:

  1. 僅支持一級範圍分區創建間隔分區;
  2. 只能有一個分區列,且分區列類型爲日期或數值;
  3. 對間隔分區進行SPLIT,只能在間隔範圍內進行操作;
  4. 被SPLIT/MERGE的分區,其左側分區不再進行自動創建;
  5. 不相鄰的間隔的分區,不能MERGE;
  6. 表定義不能包含MAXVALUE分區;
  7. 不允許新增分區;
  8. 不能刪除起始間隔分區;
  9. 間隔分區表定義語句顯示到起始間隔分區爲止;
  10. 自動生成的間隔分區,均不包含邊界值;
  11. 間隔表達式只能爲常量或日期間隔函數。日期間隔函數爲:NUMTOYMINTERVALNUMTODSINTERVAL;數值常量可以爲整型、DEC
    類型;
  12. MPP 下不支持間隔分區表。

例子:
1、按年/月創建分區,使用NUMTOYMINTERVAL函數:

SQL> CREATE TABLE t_interval1
2   (
3     employee_id         NUMBER,
4     employee_name       VARCHAR2(20),
5     birthday            DATE    
)
6   7   PARTITION BY RANGE(birthday)
8   INTERVAL (NUMTOYMINTERVAL(1,'year'))
9   (
10    PARTITION partition2014 VALUES LESS THAN(to_date('2019-01-01','yyyy-mm-dd')),
  PARTITION partition2015 VALUES LESS THAN(to_date('2020-01-02','yyyy-mm-dd'))
);

11 12 操作已執行
已用時間: 3.698(毫秒). 執行號:5.

2、按日創建分區,使用NUMTODSINTERVAL函數:
這裏需要注意:
如果在達夢中沒有設置COMPATIBLE_MODE參數爲2,即兼容oracle的模式,那麼創建按日分區時如果分區列使用date類型會出現報錯:
在這裏插入圖片描述

而使用timestamp類型則不會報錯:
在這裏插入圖片描述
但是爲了兼容oracle,這裏我們還是建議修改COMPATIBLE_MODE參數,然後就可以在date類型列上按照天來分區了:

SQL>  create table sales
2       (
    sales_id    number,
    sales_dt    date
    )
3   4   5   6       partition by range (sales_dt)
7       INTERVAL (NUMTODSINTERVAL(1,'day'))
8       (
9       partition p090101 values less than (to_date('2020-06-30','yyyy-mm-dd'))
10    );
操作已執行
已用時間: 5.252(毫秒). 執行號:4.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章