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