oracle 新建、扩展分区表

--新增(扩展)分区表 空间

--复制创建表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;

 

posted @ 2022-03-24 16:48  leihongnu  阅读(1222)  评论(0编辑  收藏  举报