2017-02-07 161 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種不同的分區。

有沒有其他更快的方法來做到這一點?此外,您是否在上述方法中看到與索引或表空間有關的任何問題?謝謝