2015-09-22 142 views
1

我的下一個腳本中現有的表:如何更改範圍值分區中按範圍甲骨文

create table sales6 
     (
      sales_id number, 
      sales_dt date 
     ) 
     partition by range (sales_dt) 

     (
      partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd')) 
     ); 

我需要的是改變分區的範圍內添加的間隔是這樣的:

interval (numtoyminterval(1,'MONTH')) 

我知道正確的做法是在創建表格時,但表格已經存在並且存儲了大量記錄。

在Oracle 11g中有沒有辦法實現這一點?我試圖改變表格,但由於00940而不工作。00000 - 「invalid ALTER command」

希望你能幫助我。

PS:我一直在閱讀甲骨文的整個文檔在此兩個環節沒有運氣: https://docs.oracle.com/cd/E17952_01/refman-5.5-en/alter-table-partition-operations.html https://docs.oracle.com/cd/E17952_01/refman-5.1-en/partitioning-management-range-list.html

+0

看看Package [DBMS_REDEFINITION](http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_redefi.htm),這有助於您更改表格 –

回答

1

你可以改變一個範圍分區表的間隔分區表使用下面的命令:

ALTER TABLE X SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')); 

您可以改回使用該命令範圍分區表:

ALTER TABLE X SET INTERVAL(); 

如果您的分區始終均勻創建(在相同的時間段內),則區間分區始終是範圍分區的更可取選項。

這些命令不是資源密集型的,因爲您不操作段和數據,只要告訴Oracle開始或停止創建新分區,如果在表中插入的新數據不適合分區鍵在任何現有劃分。

+0

非常感謝。這工作完美。 – ZetaPR