Oracle创建表分区

1.建表时创建分区

CREATE TABLE TABLE_NAME
(
ID VARCHAR2(64) NOT NULL,
CREATE_TIME DATE NOT NULL
--省略其他字段
)
--根据CREATE_TIME字段按年分区
PARTITION BY RANGE(CREATE_TIME) INTERVAL (NUMTOYMINTERVAL(1,'YEAR'))
(
--创建默认分区,定义初始值为当前时间
PARTITION TABLE_NAME_P1 VALUES LESS THAN (TO_DATE('2019-12-04','YYYY-MM-DD'))
);

2.相关时间计算函数

NUMTOYMINTERVAL(x,y)
x:是一个数字,代表具体值
y:是一个字符串,代表x的单位,可填为:year,month
NUMTODSINTERVAL(x,y)
x: 是一个数字,代表具体值
y:是一个字符串,代表x的单位,可填为:day,hour,minute,second

--时间函数使用
select sysdate, sysdate-numtoyminterval(1,'year') as res from dual;
--结果:sysdate=20191204,res=20181204

创建表根据CREATE_TIME字段按日分区,则修改如下:
PARTITION BY RANGE(CREATE_TIME) INTERVAL (NUMTODSINTERVAL(1,'DAY'))

3.查询表分区情况

--查询当前表有多少分区
select table_name,partition_name from user_tab_partitions where table_name='TABLE_NAME';

--查询这个表的某个分区里的数据
select * from TABLE_NAME partition(TABLE_NAME_P1);

发表回复

您的电子邮箱地址不会被公开。

4 × 4 =