按照時間,每天分區
create table test_p(id number,createtime date)
partition by range(createtime) interval(numtodsinterval(1,'day')) store in (users)
(
partition test_p_p1 values less than(to_date('20140110','yyyymmdd'))
);
create index index_test_p_id on test_p(id) local;
create index index_test_p_createtime test_p(createtime) local;
?
?
按照數字,200000一個分區
create table test_p(id number,createtime date)
partition by range(id) interval(200000) store in (users)
(
partition test_p_p1 values less than(200000)
);
create index index_test_p_id on test_p(id) local;
create index index_test_p_createtime test_p(createtime) local;
? interval-partitioned table(間隔分區表),即由oracle數據庫在間隔分區表上自動創建分區,無需再自己寫存儲過程或其他腳本來實現自動創建分區了。當然,間隔分區表的分區指定列只能為表的單個列,且該列只能為NUMBER或DATE類型。?間隔分區必須是基于范圍分區,可以只是范圍分區,也可以是組合分區如RANGE-LIST、RANGE-HASH等。
EXP 創建按月間隔分區表
CREATE TABLE tab_part_month
(
??t_id NUMBER,
??t_date DATE,
??t_txt VARCHAR2(20)
)
PARTITION BY RANGE(t_date)
INTERVAL (numtoyminterval(1,'month'))
(
??PARTITION p0 VALUES LESS THAN(to_date('20080101','yyyymmdd')),
??PARTITION p1 VALUES LESS THAN(to_date('20090101','yyyymmdd'))
);
INSERT INTO tab_part_month
VALUES(1,to_date('20070301','yyyymmdd'),'hihi');
INSERT INTO tab_part_month
VALUES(1,to_date('20080301','yyyymmdd'),'hihi');
INSERT INTO tab_part_month
VALUES(1,to_date('20100301','yyyymmdd'),'hihi');
備注:這是一個按月間隔分區表,分區列為t_date日期列,INTERVAL (numtoyminterval(1,'month'))即為間隔分區的語句,數字1指定間隔頻率,此時為按月分區,如果改為3則為每3個月分一個區,按日間隔分區將其改以下語句:INTERVAL (Numtodsinterval(10,'DAY'))。在上面語句中,CREATE語句中創建了p0、p1分區,在執行完前兩條INSERT語句后該表分區并未增加,直到插入第三條語句后數據庫自動增加一個新分區。