2017-02-07 118 views
0

我有一个按列表分区的表,每个分区都有多个值。例如:在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。

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

非常感谢。

回答

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

有没有其他更快的方法来做到这一点?此外,您是否在上述方法中看到与索引或表空间有关的任何问题?谢谢