2013-01-04 58 views

回答

5

目前(11gR2)無法爲間隔分區表中的自動生成分區指定名稱。請參閱Common Questions On Interval Partitioning [ID 1479115.1](需要Oracle支持帳戶):

自動創建的間隔分區的名稱是什麼?

[...]目前,它是不可能指定分區名稱的掩碼或模板,但產生的系統名稱可以重命名[...]

你也僅限於一個分區鍵列,必須是DATENUMBER類型,以及其他一些內容(請參閱註釋)。

您可以按照Creating Partitions文檔語法的例子:

create table foo (date_created date, ...) 
    partition by range(date_created) 
    interval(numtodsinterval(1, 'DAY')) 
    (partition one values less than (to_date('01012013', 'DDMMYYYY'))); 

上述內容,只要你今年插入一行與一個日期值或更高版本的新分區將被創建。新分區將被用於創建日期2013年

之前要解決的分區名稱問題(如果有必要的話),你可以重命名基於在USER_TAB_PARTITIONSHIGH_VALUE分區,雖然這聽起來很不錯。
另一種選擇是不是在所有重命名它們,當你想查詢的特定分區使用此語法:

select * 
from foo 
partition for (<the day you're interested in>); 

見例如:Oracle Interval Partitioning Tips

+0

對不起,我忘了給一個信息。在我的表格中,我沒有任何具有當前日期的列。在這種情況下,我可以在(SYSDATE)的基礎上進行分配嗎?我想根據何時將數據插入表中來完成分區。 – user1947949

+0

您需要爲日期添加一列。沒有別的選擇。你可以想象一個計算列的分區,但這不適用於你想要做的事情。 – Mat