Oracle 列表范围分区表是否可以使用PCT(分区更改跟踪)?

Oracle 列表范围分区表是否可以使用PCT(分区更改跟踪)?,oracle,oracle11g,partitioning,materialized-views,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 NUL

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

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是不可能的。搜索该消息和“列表范围复合分区”没有任何帮助


Oracle版本是11.2.0.3。

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

我会尝试以下几种方法:

  • 将DATEM移位为GROUPBY子句的第二列
  • 删除WHNUM谓词
  • 添加DBMS_MVIEW.PMARKER列
  • 老实说,这不太可能奏效,但我会给他们一个赌注,看看你是否找到了一些未记录的东西。

    来自Oracle支持(通过你指定的ID):“……只有某些类型的分区表才有资格获得PCT。Oracle数据仓库指南文档(尽管版本为11.2)当前不包含有关此限制的信息。以下类型的分区表符合10.1到11.2中的PCT要求:-不带子分区的范围分区-带列表子分区的范围分区-带哈希子分区的范围分区-不带子分区的列表分区“