【发布时间】: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