2017-02-07 9 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 различных значения.

Есть ли еще более быстрый способ сделать это? Кроме того, вы видите какие-либо проблемы, связанные с индексом или табличным пространством вообще в вышеприведенном подходе? Спасибо