Ora 11g中的数据库分区

时间:2011-03-10 13:27:48

标签: oracle oracle11g partitioning

我需要从系统参数中选择需要创建分区的日期,然后需要使用存储过程创建分区。任何指导。 正在使用Oracle 11g。

3 个答案:

答案 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 ..