必要に応じて、これらのパーティションを追加するジョブをスケジュールできます。これはDDLであるため、動的SQLを使用して実行されます。
例えば。月ごとにパーティション化されたデータを保持するテーブルの場合、各月の最後の週末にジョブを実行して、翌月のパーティションを作成することができます。
create or replace procedure p_part_maintenance_mnthy
as
declare
v_partition_name all_tab_partitions.partition_name%type;
v_limit varchar2(50);
begin
select to_char(trunc(add_months(sysdate,1),'MM'),'MonYYYY')
into v_partition_name
from dual; --eg. output Oct2012
select to_char(trunc(add_months(sysdate,2),'MM'),'dd-mon-yyyy')
into v_limit
from dual; -- eg. output 01-nov-2012
execute immediate 'ALTER TABLE sales ADD PARTITION ' || v_partition_name ||
' VALUES LESS THAN (' || v_limit || ') tablespace XYZ';
end;
/
通常、上記のようなすべての同様の関数呼び出し(日次、月次、年次)は1つのパッケージに含まれ、table_nameも入力として受け取ります。これらは、必要に応じて個々の手順から呼び出されます。