如何按日期列对 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') ));
我在 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') ));