将列表分区(值集)拆分为Oracle中的多个单值分区

时间:2017-02-07 16:54:55

标签: oracle split partition

我有一个按列表分区的表,每个分区都有多个值。例如:

partition by list (COL1)
(
  partition GROUP_1 values ('VAL1','VAL2','VAL3')
)

此表包含大量数据,有时多个会话正在尝试访问同一个块,而我正面临其他会话问题的读取。所以,我正在考虑将结构改为:

Alter Table Table_1
Split Partition GROUP_1 INTO
  partition GROUP_2 values ('VAL1'),
  partition GROUP_3 values ('VAL2'),
  partition GROUP_4 values ('VAL3')
)  PARALLEL 5;

我无法使用DBMS_REDEF,因为它会导致对象无效。我正在尝试使用拆分分区,但我正在使用ORA-14028。

实现这一目标的最佳方式是什么?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我找到了实现这一目标的递归方法。

Alter Table Table_1
Split Partition GROUP_1 VALUES ('VAL1') INTO
  (partition GROUP_1,
  partition GROUP_2)  PARALLEL 5;

然后

Alter Table Table_1
Split Partition GROUP_2 VALUES ('VAL2') INTO
  (partition GROUP_2,
  partition GROUP_3)  PARALLEL 5;

这样,我们为3个不同的值创建3个不同的分区。

还有其他更快的方法吗?另外,在上述方法中,您是否看到与索引或表空间相关的任何问题?感谢