Oracle10g Oracle 10g范围分区,间隔为1个月
我想用10g中间隔1个月的范围分区对txn表进行分区。具有txn_日期的表 我希望分区是自动的。 我认为这在11中是可能的,但在10g中是否有任何方法可以实现Oracle10g Oracle 10g范围分区,间隔为1个月,oracle10g,Oracle10g,我想用10g中间隔1个月的范围分区对txn表进行分区。具有txn_日期的表 我希望分区是自动的。 我认为这在11中是可能的,但在10g中是否有任何方法可以实现 create table part ( txn_Date date ) PARTITION BY RANGE (txn_date) INTERVAL (NUMTOYMINTERVAL(1,'MONTH')) ( partition p1 values less than (TO_DATE('01-NOV-2007','DD-M
create table part
(
txn_Date date
)
PARTITION BY RANGE (txn_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
partition p1 values less than (TO_DATE('01-NOV-2007','DD-MON-YYYY'))
);
您可以在适当的时候安排一个作业来添加这些分区。因为这是一个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;
/
通常,所有类似的函数调用(每日、每月和每年)都在一个包中,并将表_名称作为输入。必要时,可从各个程序调用这些问题。问题和答案都对日期格式或语言进行了假设。我强烈建议您始终使用ANSI日期文字,如日期“2007-11-01”。