【问题标题】:Create year date partitions on an existing unpartitioned table在现有的未分区表上创建年份日期分区
【发布时间】:2018-09-18 15:46:07
【问题描述】:

我想知道一种对现有表进行分区的简单方法。我认为通过 Ranges 并使用日期字段会起作用。

但是我在 Oracle 网站上看到了两个选项(请参阅下面的链接)

https://docs.oracle.com/database/122/VLDBG/evolve-nopartition-table.htm#VLDBG00302

将非分区表转换为分区表似乎比使用在线重定义到分区集合表更容易,只需执行相关步骤即可。

但是我在这里看到(见下面的链接)

https://asktom.oracle.com/pls/apex/f?p=100:11:::NO:RP:P11_QUESTION_ID:9533887100346178338

我们看到

SQL> ALTER TABLE a MODIFY
  2  PARTITION BY RANGE(x) INTERVAL (10)
  3  ( PARTITION P1 VALUES LESS THAN (10),
  4  PARTITION P2 VALUES LESS THAN (20),
  5  PARTITION P3 VALUES LESS THAN (30)
  6  )
  7  update indexes
  8  (xpa local,
  9  xiea global partition by range(y)
 10  (partition ip1 values less than (MAXVALUE))
 11  ) ;

Table altered.

所有这些仅在 12.2 中有效。如果您使用的是 12.1,则需要使用 DBMS_REDEFINITION。示例见这里

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:869096700346654484

所以我正在使用..

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production    0
PL/SQL Release 12.1.0.2.0 - Production  0
"CORE   12.1.0.2.0  Production" 0
TNS for Linux: Version 12.1.0.2.0 - Production  0
NLSRTL Version 12.1.0.2.0 - Production  0

我只能使用(仅限于)在线重定义来分区表吗?

按年创建分区的干净方法是什么?

【问题讨论】:

  • 是的,如果您使用的是 12.1,您唯一的选择就是使用 dbms_redefinition。

标签: oracle date database-partitioning


【解决方案1】:

如果您仍然需要分区提示的答案,您可以找到正确的here 解释。

对于第二个问题,您可以使用 Oracle 11g 中的自动分区创建。下面是一些代码示例:

PARTITION BY RANGE (date_col) 
  INTERVAL(NUMTOYMINTERVAL(1, 'YEAR'))
    ( PARTITION p0 VALUES LESS THAN (TO_DATE('01-01-2016', 'DD-MM-YYYY')),
      PARTITION p1 VALUES LESS THAN (TO_DATE('01-01-2017', 'DD-MM-YYYY')),
      PARTITION p2 VALUES LESS THAN (TO_DATE('01-01-2018', 'DD-MM-YYYY')),
      PARTITION p3 VALUES LESS THAN (TO_DATE('01-01-2019', 'DD-MM-YYYY')) );

范围分区的高值是过渡点。数据库会自动为超出该转换点的数据创建间隔分区。 对于我们的示例,转换点是 01-01-2019,因为 01-01-2019 是最大日期。您不必创建 MAX_VALUE 分区。

如何启用或更改间隔?

ALTER TABLE t_part SET INTERVAL(NUMTOYMINTERVAL(1,'YEAR'));

如何禁用它?

ALTER TABLE <TABLE name> SET INTERVAL ();

Here你可以找到一些关于这个函数的信息。如果您需要更多信息,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多