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