簡體   English   中英

在Oracle中使用間隔分區對現有表進行分區

[英]Partition existing table using interval partitioning in Oracle

我想使用間隔分區和列表子分區在oracle 12中對現有表進行分區。 我發現了一些有關如何隨后在范圍內進行分區的信息,但沒有使用間隔分區。 我想告訴數據庫第一個分區及其具有的值(日期),他將為表中的所有數據集自動創建其余分區。

ALTER TABLE TEST_TABLE MODIFY
 PARTITION BY RANGE(TESTDATE) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) 
 SUBPARTITION BY LIST(COMPANY_NR) (
 PARTITION p1 VALUES LESS THAN (TO_DATE('01.01.2018 00:00:00', 'DD.MM.YYYY HH24:MI:SS'))
 (
    SUBPARTITION P_1 VALUES(1),
    SUBPARTITION P_2 VALUES(2)
  )
 );

這樣可以自動創建具有間隔的分區嗎? 我在任何地方都找不到任何信息。 如果是的話,我在這里做錯了什么? 它說我缺少子分區關鍵字。

您必須像這樣使用SUBPARTITION TEMPLATE:

CREATE TABLE TEST_TABLE (...)
    PARTITION BY RANGE (TESTDATE) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) 
    SUBPARTITION BY LIST (COMPANY_NR)
    SUBPARTITION TEMPLATE 
    (
        SUBPARTITION P_1 VALUES (1),
        SUBPARTITION P_2 VALUES (2)
        SUBPARTITION P_others VALUES (DEFAULT)
    )
    (
        PARTITION p1 VALUES LESS THAN (DATE '2018-01-01')
    );

您可以在現有表上更改子分區模板,請參閱修改子分區模板。

但是,如果您想更改分區,則必須使用DBMS_REDEFINITION包。

暫無
暫無

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

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