2016-06-06 6 views
0

한 열에서 해시로 파티션을 만들고 다른 열에서 목록으로 하위 분할로 테이블을 만들고 싶습니다. 테이블 생성은 다음과 같아야합니다.해시 별 파티션 - 목록 별 하위 분할

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), 
    ... 
    ) 

기존의 이유로 해시로 파티션을 유지해야합니다. 하위 분할 영역을 범위/해시로 변경할 수 있습니다. 그러나 오라클은 단순히 list/range/hash를 사용하여 해시 + 하위 파티셔닝으로 파티션을 만들도록 내버려 두지 않습니다. 나는 많은 것을 찾았지만 한 가지 예도 얻지 못했다. 이제 그것이 지원되는지 아닌지 궁금합니다. 누군가가 어떻게해야하는지 알려주실 수 있습니까?

답변

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)