2012-05-12 58 views
2

我创建列表范围分区表:对于列表范围分区表,PCT(分区更改跟踪)是否可能?

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

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

+0

从Oracle支持中(您指定的ID):“......只有特定类型的分区表才有资格获得PCT。”Oracle数据集成指南“文档(尽管版本11.2)当前未包含有关此限制的信息。以下类型的分区表适用于10.1到11.2中的PCT: ** - **没有子分区的范围分区 ** - **具有列表子分区的范围分区 ** - **带有哈希子分区的范围分区 ** - 没有子分区的列表分区**“ – AntonLosev

0

我想尝试几件事情:

  1. 移DATEM是该组的第二列BY子句
  2. 删除WHNUM谓语。
  3. 添加DBMS_MVIEW.PMARKER列

不大可能奏效说实话,但我想给他们一个平底船,看看你是否已经碰到了什么东西无证。