リスト範囲分割テーブルを作成しました:
CREATE TABLE WHREST_PRT(
RCNUM NUMBER NOT NULL,
WHNUM NUMBER NOT NULL,
WARE VARCHAR2(10 CHAR) NOT NULL,
DATEM DATE NOT NULL,
QUANTITY NUMBER NOT NULL,
DATEOPER DATE NOT NULL
)
PARTITION BY LIST( RCNUM )
SUBPARTITION BY RANGE( DATEM )(
PARTITION P127 VALUES (127) COMPRESS FOR OLTP (
SUBPARTITION P127_PRE_2003 VALUES LESS THAN (TO_DATE('01.01.2003','DD.MM.YYYY')) COMPRESS FOR OLTP,
SUBPARTITION P127_Q1_2003 VALUES LESS THAN (TO_DATE('01.04.2003','DD.MM.YYYY')) COMPRESS FOR OLTP
),
...
PARTITION P997 VALUES (997) COMPRESS FOR OLTP (
SUBPARTITION P997_PRE_2003 VALUES LESS THAN (TO_DATE('01.01.2003','DD.MM.YYYY')) COMPRESS FOR OLTP,
SUBPARTITION P997_Q1_2003 VALUES LESS THAN (TO_DATE('01.04.2003','DD.MM.YYYY')) COMPRESS FOR OLTP
)
)
次に、13 の部門パーティションのそれぞれに、さらに四半期サブパーティション (2015 年 1 月 1 日まで) を手動で追加しました。現在、サブパーティションの総数は 602 です。
次に、データを入力します。
今、マテリアライズドビューを作成しようとしています:
CREATE MATERIALIZED VIEW MV_WHREST_SUM_QNT (
RCNUM, WARE, DATEM, SUM_QNT, CNT_CNT, CNT
) PARALLEL
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
AS
SELECT RCNUM,
WARE,
DATEM,
SUM( QUANTITY ),
COUNT( QUANTITY ),
COUNT( * )
FROM WHREST_PRT
WHERE WHNUM > 1
GROUP BY RCNUM, WARE, DATEM
しかし、DBMS_MVIEW.EXPLAIN_MVIEW の結果は、次のメッセージで PCT が不可能であることを示しています。
2070 PCT not supported with this type of partitioning
私の場合、なぜPCTができないのだろうか。「list-range composite partitioning」と一緒にそのメッセージを検索しても、何も役に立ちませんでした。
Oracle のバージョンは 11.2.0.3 です。