是否可以对列表范围分区表进行PCT(分区更改跟踪)?

时间:2012-05-12 13:50:29

标签: oracle oracle11g partitioning materialized-views

我已经创建了列表范围分区表:

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

然后我手动将更多季度子分区(截至01-JAN-2015)添加到13个部门分区中的每一个。现在,子网站的总数是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在我的案例中是不可能的。与'列表范围复合分区一起搜索该消息'没有任何帮助。

Oracle版本是11.2.0.3。

2 个答案:

答案 0 :(得分:2)

这可能是一个错误。 My Oracle Support上的文章ID 1281826.1列出了符合分区更改跟踪条件的分区类型。它没有解释为什么不允许某些分区类型。虽然它确实包含对不同类型的分区的错误的引用,但也是不允许的。

答案 1 :(得分:0)

我会尝试一些事情:

  1. 将DATEM转移到group by子句
  2. 的第二列
  3. 删除WHNUM谓词。
  4. 添加DBMS_MVIEW.PMARKER列
  5. 不太可能诚实地工作,但我会给他们一个平底船,看看你是否打了一些无证件。