2011-03-10 45 views
0

我需要從系統參數中爲需要創建分區的日期中選擇一個日期,然後需要使用存儲過程創建分區。任何指導。 正在使用Oracle 11g。Ora中的數據庫分區11g

回答

2

你可以使用動態PL/SQL是這樣的:

select the_date into l_date from system_parameters where...; 

execute immediate 'alter table mytable add partition p_' || replace(l_date,'-','') 
|| ' values less than (to_date(''' || l_date || ''',''DD-MON-YYYY'')'; 
3

羅南,

也許你可以採取區間劃分?您正在使用11g,因此您可以使用間隔分區。這會在需要的基礎上生成分區,當插入數據並且所需的分區尚不可用時。

0

我同意@ik_zelf的回答,如果您要實施過期日期的合作,並希望在日期到來時制定計劃,請執行時間間隔分配。也不需要存儲過程。

它是Oracle 11g中的一項新功能。在插入記錄時創建特定時間間隔,所以您不必擔心新分區。新Partiotions會得到一個系統的名稱,以及像SYS_PXXX ..

這是如何去爲間隔分區..

CREATE TABLE interval_tab (
    id   NUMBER, 
    code   VARCHAR2(10), 
    description VARCHAR2(50), 
    created_date DATE 
) 
PARTITION BY RANGE (created_date) 
INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) -- change to 12 for an year 
(
    PARTITION part_01 values LESS THAN (TO_DATE('01-JAN-2012','DD-MON-YYYY')) 
); 

間隔分區無關與先前分區,最後一個分區創建間隔之前將是過渡點。

你也可以去與

ALTER TABLE的方式來增加分區以及..