我想用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'))
);
答案 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作为输入。必要时可以从个别程序调用这些程序。