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;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM