记录表分区用法

Oracle数据库提供对表或索引的分区方法有几种:
     1)范围分区
     2)列表分区
     3)散列分区(hash分区)
     4)复合分区(子分区)

 **大部分都是自己学习笔记,一些直接复制过来的,按时间分区**

1、表按月自动创建分区
create table DATABUS.T_ZNF
(
ID NUMBER(24) not null,
CREATE_DATE DATE,
STATE VARCHAR2(10),
T_DESC VARCHAR2(255)
)
partition by range (CREATE_DATE) interval (numtoyMinterval (1,'MONTH'))(
partition T_LOGTIME_main values less than (TO_DATE(' 2018-02-28 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);
insert into DATABUS.T_ZNF(ID,CREATE_DATE,STATE,T_DESC)
values(1,sysdate,'01','测试');
select * from DATABUS.T_ZNF;
2、表按天自动创建分区
create table DATABUS.T_ZNF_day
(
ID NUMBER(24) not null,
CREATE_DATE DATE,
STATE VARCHAR2(10),
T_DESC VARCHAR2(255)
)
partition by range (CREATE_DATE) interval (NUMTODSINTERVAL (1,'DAY'))(
partition T_LOGTIME_main values less than (TO_DATE(' 2018-02-28 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);
insert into DATABUS.T_ZNF_day(ID,CREATE_DATE,STATE,T_DESC)
values(1,TO_DATE('2019-12-24 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),'01','测试');
insert into DATABUS.T_ZNF_day(ID,CREATE_DATE,STATE,T_DESC)
values(1,TO_DATE('2019-12-25 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),'01','测试');
insert into DATABUS.T_ZNF_day(ID,CREATE_DATE,STATE,T_DESC)
values(1,TO_DATE('2019-12-26 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),'01','测试');
select * from DATABUS.T_ZNF_day;
--查看分区情况
select * from user_tab_partitions where table_name='T_ZNF_DAY';
alter table t_znf truncate partition SYS_P663 update global indexes;--删除表分区的数据,表分区仍旧存在
alter table t_znf drop partition SYS_P663 update global indexes; --删除表分区及其数据

你可能感兴趣的:(数据库)