如何按日期列对 oracle table 进行分区?

How to partition an oracle table by a date column?

我在 oracle 中有一个 table:

CREATE TABLE transaction (
    id INT NOT NULL,
    accountnumber VARCHAR NOT NULL,
    stmtvaluedate DATE NOT NULL,
    ...
)

我想按 stmtvaluedate 列对这个 table 进行分区。我的目标是在一个月过去后创建一个新分区。

有什么好的剧本吗?或者我必须创建静态数量的分区?

最好是:如果过了一个月,会自动创建一个新的分区。

任何人都可以给我一个例子,说明如何在每个月之后按日期列对 table 进行分区吗?如果自动分区是不可能的,那么我需要一个例子,它按日期列创建从现在开始一年的分区,大约每个月。

谢谢!

你想做的事完全有可能。应该这样做:

CREATE TABLE transaction (
    id INT NOT NULL,
    accountnumber VARCHAR2(30) NOT NULL,
    stmtvaluedate DATE NOT NULL
)
PARTITION BY RANGE (stmtvaluedate)
INTERVAL (NUMTOYMINTERVAL (1,'MONTH')) 
    ( partition transaction_old values less than (to_date('01-JAN-2000','DD-MON-YYYY') ));