2

リスト範囲分割テーブルを作成しました:

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 です。

4

2 に答える 2

2

おそらくバグです。My Oracle Support の記事 ID 1281826.1 には、Partition Change Tracking の対象となるパーティショニングのタイプがリストされています。一部のパーティショニング タイプが許可されない理由が説明されていません。許可されていない別のタイプのパーティショニングのバグへの参照が含まれていますが。

于 2012-05-13T04:48:18.093 に答える
0

私はいくつかのことを試してみます:

  1. DATEMをgroupby句の2番目の列にシフトします
  2. WHNUM述部を削除します。
  3. DBMS_MVIEW.PMARKER列を追加します

正直に言うとうまくいかないかもしれませんが、文書化されていない何かにぶつかったかどうかを確認するために彼らにパントを与えます。

于 2012-05-14T07:50:45.013 に答える