--新增(擴展)分區表 空間
--復制創建表sql中的 分區語句
partition by range (STATE_DATE)
(
partition PART_202006 values less than
(TO_DATE(' 2020-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace FRADATA_02
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
)
);
--修改上面的模板
--PART_202006:分區名稱
--(TO_DATE(' 2020-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')):按日期分區
alter table 表名 add partition 分區編號 values less than
(TO_DATE('2022-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace FRADATA_02
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
)
UPDATE GLOBAL INDEXES;
--創建新分區后可以分析分析
--EXECUTE IMMEDIATE 'analyze table 表名 estimate statistics';
--查看分區內容
select count(1) from 表名 partition (分區編號);
--擴展日分區
declare
v_table varchar2(64):='表名';
v_day_start varchar2(8) :='20210702';
v_day_end varchar2(8) :='20221231';
i varchar2(8);
v_sql varchar2(5000);
v_nday varchar2(8);
begin
i := v_day_start;
while i <= v_day_end loop
v_nday := to_char(to_date(i,'yyyymmdd'),'yymmdd');
v_sql := 'alter table '||v_table||' add partition part_'||i||' values ('||i||') update indexes';
execute immediate v_sql;
i := to_char(to_date(i,'yyyymmdd')+1,'yyyymmdd');
end loop;
commit;
end;