我想创建一个表,我在一个列上按哈希进行分区,在另一列上按列表进行子分区。表创建应如下所示:
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根本不允许我通过列表/范围/哈希的哈希+子分区创建分区。我搜索了很多,但没有得到一个例子。现在我想知道它是否支持。有人可以告诉我怎么做吗?
答案 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)