首页 > 代码库 > 表分区 使用

表分区 使用

10g 时间分区,每个时间分区要建一个对应的分区。

create table table_aaa(entry_id VARCHAR2(18),pre_entry_id VARCHAR2(18),id_chk VARCHAR2(1),i_e_flag VARCHAR2(1),i_e_port VARCHAR2(4),i_e_date DATE,d_date DATE, entry_part varchar2(20))partition by range (d_Date)subpartition by list (entry_part) subpartition template(subpartition EH_B values (B),subpartition EH_C values (C),subpartition EH_E values (E),subpartition EH_H values (H),subpartition EH_M values (M),subpartition EH_N values (N),subpartition EH_X values (X),subpartition EH_OTHER VALUES (DEFAULT) )(partition part_200201 values less than (to_date(200201,yyyymm)));

 

--再增加表分区

alter table table_aaa add partition part_200202 values less than (to_date(200202,yyyymm))(subpartition EH_B values (B),subpartition EH_C values (C),subpartition EH_E values (E),subpartition EH_H values (H),subpartition EH_M values (M),subpartition EH_N values (N),subpartition EH_X values (X),subpartition EH_OTHER VALUES (DEFAULT) );

 

上面已经建立了两个分区,因为现在的业务要求是每个月一个分区,所以每个月都是再建 一个分区。

那么这样应该用一个job,调试存储过程,在存储过程里写动态建分区:

execute immediate alter table table_aaa add partition values (||CHR(39)||part_||table_aaa.d_Date||CHR(39)||) (subpartition values less than(to_date(sysdate,|| CHR(39)||yyyymm||CHR(39)||)))( subpartition EH_B values (‘‘‘B‘‘‘),subpartition EH_C values (‘‘‘C‘‘‘),subpartition EH_E values (‘‘‘E‘‘‘),subpartition EH_H values (‘‘‘H‘‘‘), subpartition EH_M values (‘‘‘M‘‘‘),subpartition EH_N values (‘‘‘N‘‘‘),subpartition EH_X values (‘‘‘X‘‘‘),subpartition EH_OTHER VALUES (DEFAULT));

 

表分区 使用