Hash分区 - 按列表分区

时间:2016-06-06 19:28:07

标签: oracle hash partitioning

我想创建一个表,我在一个列上按哈希进行分区,在另一列上按列表进行子分区。表创建应如下所示:

CREATE TABLE testt
(
   Id              CHAR(3),
   time                   DATE,
   month AS (EXTRACT (MONTH FROM time))
)
PARTITION BY HASH (Id) 
PARTITIONS 4 
STORE IN (ts1, ts2, ts3, ts4)

  SUBPARTITION BY LIST (month)   
    SUBPARTITION template 
    ( 
    SUBPARTITION JANUARY VALUES (01), 
    SUBPARTITION FEBRUARY VALUES (02),
    ...
    )

由于遗留原因,我需要按哈希维护分区。我可以将子分区更改为Range / Hash。 但Oracle根本不允许我通过列表/范围/哈希的哈希+子分区创建分区。我搜索了很多,但没有得到一个例子。现在我想知道它是否支持。有人可以告诉我怎么做吗?

1 个答案:

答案 0 :(得分:1)

您的语句语法无效,请参阅http://docs.oracle.com/database/121/SQLRF/statements_7002.htm#CJABBBAI

散列分区计数和表空间的规范应该在子分区模板之后。

CREATE TABLE testt
(
    Id              CHAR(3),
    time            DATE,
    month AS (EXTRACT (MONTH FROM time))
)
PARTITION BY HASH (Id) 
SUBPARTITION BY LIST (month)   
SUBPARTITION template ( 
    SUBPARTITION JANUARY VALUES (01), 
    SUBPARTITION FEBRUARY VALUES (02),
    ...
)
PARTITIONS 4
    STORE IN (ts1, ts2, ts3, ts4)