Oracle 10g范围分区,间隔为1个月

时间:2012-09-21 14:44:32

标签: oracle10g

我想用10g的1个月间隔对范围分区的txn表进行分区。表有txn_date。

我希望分区是自动的。 我认为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-MON-YYYY'))
);

1 个答案:

答案 0 :(得分:0)

您可以根据需要安排作业添加这些分区。由于这是一个DDL,因此可以使用动态SQL完成。

EG。对于保存按月分区的数据的表,您可以在每个月的最后一个周末找到一份工作,这将创建下个月的数据。

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;
/

通常所有类似的函数调用(如上面的,每天的,每月的和每年的)都在一个包中,并且也将table_name作为输入。必要时可以从个别程序调用这些程序。