【发布时间】:2012-02-10 15:13:23
【问题描述】:
我需要从系统参数中选择一个需要创建分区的日期,然后需要使用存储过程创建分区。任何指导。 正在使用 Oracle 11g。
【问题讨论】:
标签: oracle oracle11g partitioning
我需要从系统参数中选择一个需要创建分区的日期,然后需要使用存储过程创建分区。任何指导。 正在使用 Oracle 11g。
【问题讨论】:
标签: oracle oracle11g partitioning
罗南,
也许你可以采用区间分区?您使用的是 11g,因此您可以使用间隔分区。当插入数据并且所需的分区尚不可用时,这会在所需的基础上生成分区。
【讨论】:
您可以使用动态 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'')';
【讨论】:
我同意@ik_zelf 的回答,如果您要在日期上实施分区,并且想在日期到来时进行,请进行间隔分区。也不需要存储过程。
它是 Oracle 11g 中的一个新特性。它在插入记录时为特定间隔创建分区,因此您不必担心新分区。新的分区将被赋予一个系统名称以及 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'))
);
Interval Partition与之前的Partition无关,在interval之前创建的最后一个partition就是这里的过渡点。
你也可以去
ALTER TABLE 方法也可以添加分区..
【讨论】: