添加间隔月分区

add interval monthly partition

我想创建这个 table,在 endTime 列上有一个每月分区。 我的意思是每个月由 oracle 自动添加一个分区。

create table T_CALLSESSION()  PARTITON BY RANGE (C_ENDTIME )
INTERVAL(NUMTOYMINTERVAL(1,'month'); (
    C_ID NUMBER(34, 0) not null,
    C_ENDTIME timestamp not null,
    C_STARTTIME timestamp not null,
    C_TYPE number(10,0) not null,
    F_CREATOR NUMBER(34, 0),
    F_MESSAGE_THREAD NUMBER(34, 0),
    primary key (C_ID)
);

有效吗?

您的代码中有一些错误。

  • Table 名称不应包含括号 ()
  • PARTITION 子句必须在列和约束声明之后。
  • 您必须使用 INTERVAL 分区以便自动创建新分区。
  • 必须使用一些常量值创建一个分区,然后自动创建其他分区。

使用以下代码:

create table T_CALLSESSION  (
    C_ID NUMBER(34, 0) not null,
    C_ENDTIME timestamp not null,
    C_STARTTIME timestamp not null,
    C_TYPE number(10,0) not null,
    F_CREATOR NUMBER(34, 0),
    F_MESSAGE_THREAD NUMBER(34, 0),
    primary key (C_ID)
) PARTITION BY RANGE (C_ENDTIME)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
( 
   PARTITION T_CALLSESSION_P1 VALUES LESS THAN (TO_DATE('01-06-2020', 'DD-MM-YYYY'))
);