簡體   English   中英

如何按日期列對oracle表進行分區?

[英]How to partition an oracle table by a date column?

我在 oracle 中有一張表:

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

我想通過 stmtvaluedate 列對這個表進行分區。 我的目標是在一個月過去后創建一個新分區。

有什么好的劇本嗎? 或者我必須創建靜態數量的分區?

最好是:如果一個月過去了,將自動創建一個新分區。

誰能給我一個關於如何在每個月后按日期列對表進行分區的示例? 如果自動分區是不可能的,那么我需要一個例子,它通過日期列創建從現在到一年的分區,大約每個月。

謝謝!

您想要做的完全是可能的。 應該這樣做:

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

我用月度分區創建了下面的表CREATE TABLE DEMO

  ( 
   business_date date
  )
 PARTITION BY RANGE (business_date) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 (PARTITION p1 VALUES LESS THAN (TO_DATE('01-JAN-2019','dd-MON-yyyy'))
  );

 insert into DEMO values('27-SEP-20')\n

insert into DEMO values('21-SEP-19')
insert into DEMO values('27-JUN-20')

在這里,oracle的四個分區用P1創建了一個分區,其他3個用SYS P277 ..創建了分區。

我正在嘗試從Spring Boot API中選擇查詢,我將如何做到這一點。 如果我們不知道其余的三個分區名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM