今天朋友问我, 说想建一个按星期分区的表,就是按星期几分区,没用过,就搜了下,可以用Oracle 11g 中虚拟列来实现。在11g之前 分区表的partition key必须是物理存在的。 11g开始提供了虚拟列,并且可以作为partition key 。
关于分区表,之前也做个整理:
Oracle 分区表
http://blog.csdn.net/xujinyang/article/details/6832735
Oracle 11g 新特性简介
http://blog.csdn.net/xujinyang/article/details/6829731
一.按星期分区表示例:
1. 创建分区表:
CREATE TABLE PT
(
getdate date NOT NULL,
wd NUMBER GENERATED ALWAYS AS (TO_NUMBER (TO_CHAR (getdate, 'D'))) VIRTUAL
)
PARTITION BY LIST (wd)
(PARTITION Sun VALUES (1),
PARTITION Mon VALUES (2),
PARTITION Tue VALUES (3),
PARTITION Wed VALUES (4),
PARTITION Thu VALUES (5),
PARTITION Fri VALUES (6),
PARTITION Sat VALUES (7)
);
2. 插入测试数据
SQL> insert into pt(getdate) values(sysdate);
已创建 1 行。