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



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

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。

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

多谢。

我找到了实现此目的的递归方法。

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 个不同的分区。

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

最新更新