【问题标题】:Is PCT (Partition Change Tracking) possible for list-range partitioned tables?PCT(分区更改跟踪)是否可以用于列表范围分区表?
【发布时间】:2012-05-20 19:34:10
【问题描述】:

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

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。

【问题讨论】:

    标签: oracle oracle11g partitioning materialized-views


    【解决方案1】:

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

    【讨论】:

    • 来自 Oracle 支持(按您指定的 ID):“...只有某些类型的分区表符合 PCT 条件。Oracle 数据仓库指南文档(尽管版本 11.2)目前不包含有关在 10.1 到 11.2 中,以下类型的分区表符合 PCT 条件: - 没有子分区的范围分区 - 有列表子分区的范围分区 - 带有哈希子分区的范围分区- 没有子分区的列表分区"
    【解决方案2】:

    我会尝试几件事:

    1. 将 DATEM 移到 group by 子句的第二列
    2. 删除 WHNUM 谓词。
    3. 添加 DBMS_MVIEW.PMARKER 列

    说实话不太可能工作,但我会给他们一个赌注,看看你是否遇到了无证的东西。

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多