【问题标题】:using INTERVAL (NUMTOYMINTERVAL (1,'MONTH') in SUBPARTITION在 SUBPARTITION 中使用 INTERVAL (NUMTOYMINTERVAL (1,'MONTH')
【发布时间】:2015-01-04 15:26:48
【问题描述】:

我正在尝试将分区添加到我创建的表中。我希望它在“PARTITION GRP”上分区并按月分区。但我不知道如何在子分区中编写 INTERVAL 子句。 有人可以帮我吗?谢谢!

PARTITION BY RANGE (PARTITION_GRP)
SUBPARTITION BY RANGE (RPTG_MTH_DATE)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
   PARTITION PG_0 VALUES LESS THAN (1)
  (SUBPARTITION PG_0_201401 VALUES LESS THAN (TO_DATE('1-FEB-2014', 'DD-MON-YYYY'))),
   PARTITION PG_1 VALUES LESS THAN (2)
  (SUBPARTITION PG_1_201401 VALUES LESS THAN (TO_DATE('1-FEB-2014', 'DD-MON-YYYY'))),   
   PARTITION PG_2 VALUES LESS THAN (3)
  (SUBPARTITION PG_2_201401 VALUES LESS THAN (TO_DATE('1-FEB-2014', 'DD-MON-YYYY'))),
   PARTITION PG_3 VALUES LESS THAN (4)
  (SUBPARTITION PG_3_201401 VALUES LESS THAN (TO_DATE('1-FEB-2014', 'DD-MON-YYYY'))),
   PARTITION PG_4 VALUES LESS THAN (MAXVALUE)
  (SUBPARTITION PG_4_201401 VALUES LESS THAN (TO_DATE('1-FEB-2014', 'DD-MON-YYYY')))
 ) 

【问题讨论】:

    标签: oracle plsql intervals partitioning


    【解决方案1】:

    来自the documentation

    间隔分区的限制
    INTERVAL 子句受以下限制:

    • 您只能指定一个分区键列,并且必须是 NUMBER 或 DATE 类型。
    • 索引组织表不支持此子句。
    • 您不能在间隔分区表上创建域索引。
    • 子分区级别不支持间隔分区。 ...

    所以你不能有间隔子分区。

    【讨论】:

    • 谢谢。所以我想我必须手动为每个分区添加子分区,但这是否意味着我必须记住在新的月份到来时添加一个新的子分区?
    • 如果您使用子分区,则必须手动添加新分区和/或子分区。我强烈建议您将表设置为间隔分区,以便数据库可以根据需要添加所需的分区。
    • 我现在面临的挑战是我需要在不同的时间分别将每个组件插入到这个表中,我知道的唯一方法是使用 ALTER TABLE TRUNCATE PARTITION。我曾经使用“PARTITION_GRP”作为子分区,这样我就可以进行间隔分区,但似乎我必须列出每个分区中的所有子分区才能完全截断“PARTITION_GRP”。这就是为什么我在想也许我可以切换这两个......
    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多