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

问题描述 投票:0回答:2

我在oracle中有一张表:

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

我想按 stmtvaluedate 列对该表进行分区。我的目标是一个月后创建一个新分区。

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

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

任何人都可以给我一个关于如何在每月之后按日期列对表进行分区的示例吗?如果自动分区是不可能的,那么我需要一个示例,它通过日期列(大约每个月)创建一年后的分区。

谢谢!

database oracle-database date database-partitioning database-scripts
2个回答
18
投票

你想做的事情是完全可能的。 这应该可以做到:

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') ));

0
投票

@马修麦克皮克

对于列类型 DATE,如果这样做我会发现问题

间隔(NUMTOYMINTERVAL(1,'月'))

任何特定的 Oracle 版本都支持此功能

© www.soinside.com 2019 - 2024. All rights reserved.