oracle范围分区

--建表

partition by range (STAT_TIME) (   partition P_MAX values less than (MAXVALUE) );

--历史数据

alter table 按日分区的表名 split partition p_max at (20150101) into (partition p_20141231,partition p_max ) ;

alter table 按日分区的表名 split partition p_max at (20160101) into (partition p_20151231,partition p_max ) ;

alter table 按日分区的表名 split partition p_max at (20170101) into (partition p_20161231,partition p_max ) ;

alter table 按日分区的表名 split partition p_max at (20180101) into (partition p_20171231,partition p_max ) ;

commit;  

--20180101后面按日分区:

declare   v_sql varchar2(4000);

begin  

for x in (    select to_char(atv,'yyyymmdd') atv,to_char(pv,'yyyymmdd') pv from (      select to_date('20180301','yyyymmdd')+level-1  atv,to_date('20180301','yyyymmdd')-1+level-1  pv from dual connect by

level<=100    )  )

loop   

  v_sql := ' alter table 按日分区的表名 split partition p_max at ('||x.atv||') into (partition p_'||x.pv||',partition p_max ) ' ;   

   EXECUTE IMMEDIATE v_sql;     

end loop;

end;

/

猜你喜欢

转载自www.cnblogs.com/jiangqingfeng/p/9051927.html