我需要从系统参数中选择需要创建分区的日期,然后需要使用存储过程创建分区。任何指导。 正在使用Oracle 11g。
答案 0 :(得分:3)
罗南,
也许您可以采用间隔分区?您正在使用11g,因此可以使用间隔分区。当插入数据并且所需的分区尚不可用时,这会在需要的基础上生成分区。
答案 1 :(得分: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'')';
答案 2 :(得分:0)
我同意@ik_zelf的答案,如果你打算在约会期间实施一个分手,并且希望在日期到来时制作,请参阅间隔分区。也不需要存储过程。
它是Oracle 11g的新功能。其中在插入记录时为特定时间间隔创建分区,因此您无需担心新分区。新的Partiotions将被赋予系统名称,如SYS_PXXX ..
这就是Interval Partition的用法。
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'))
);
Interval Partition与之前的Partition无关,在interval之前创建的最后一个分区就是这里的转换点。
您也可以使用
ALTER TABLE方式也可以添加PARTITION ..