我创建了列表范围分区表:
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
)
)
然后,我手动将更多的季度子分区(截至 2015 年 1 月 1 日)添加到 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。
这可能是一个错误。 "我的 Oracle 支持"上的文章 ID 1281826.1 列出了符合分区更改跟踪条件的分区类型。 它没有解释为什么不允许某些分区类型。 尽管它确实包含对也不允许的不同类型的分区的错误引用。
我会尝试几件事:
- 将 DATEM 移至分组依据子句的第二列
- 删除 WHNUM 谓词。
- 添加DBMS_MVIEW。标记柱
老实说,不太可能工作,但我会给他们一个平底船,看看你是否击中了没有记录的东西。