一般一张表超过2G的大小,ORACLE是推荐使用分区表的。pv表、接口调用记录表通常增长较快,且通常包含创建时间字段。创建时间多用date类型或者timestamp时间戳类型。关于按date类型分区,网上资料一搜一大把,这里就不详细介绍了。但是,关于按timestamp类型分区,网上资料就很少啦。其实也很简单,跟date类型很类似,估计是网上各位大佬懒得说才难以找到。这里我做简要记录,以便日后参考。
**
1、按时间戳创建固定分区
**
CREATE TABLE TEST_CARD (
ID NUMBER (19) NOT NULL,
CREATEDATE TIMESTAMP (6)
) PARTITION BY RANGE (CREATEDATE)(
PARTITION P2020028213030
VALUES
LESS THAN (
TIMESTAMP '2020-02-28 21:30:00'
),
PARTITION P2020028213300
VALUES
LESS THAN (
TIMESTAMP '2020-02-28 21:33:00'
),
PARTITION PMAX
VALUES
LESS THAN (MAXVALUE)
);
**
2、按时间戳创建分区(按年、月、日、时、分、秒)
**
numtodsinterval(x,c),x是一个数字,c是一个字符串,
表明x的单位,这个函数把x转为interval day to second数据类型
常用的单位有 (‘day’,‘hour’,‘minute’,‘second’)
numtoyminterval与numtodsinterval函数类似,将x转为interval year to month数据类型
常用的单位有’year’,‘month’
CREATE TABLE TEST_CARD2 (
ID NUMBER (20) NOT NULL,
CREATEDATE TIMESTAMP (6)
) PARTITION BY RANGE (CREATEDATE)
INTERVAL (numtoyminterval(1, 'month'))
(
PARTITION P2020028213030
VALUES
LESS THAN (
to_TIMESTAMP('2020-02-28 21:30:30','yyyy-mm-dd hh24:mi:ss')
)
);