銷售記錄表按季度分區,每月 30MB,每季 100MB 表空間:
-- 1. 建立四季表空間
CREATE TABLESPACE ts_sale1999q1 DATAFILE '/u1/oradata/sales/sales1999_q1.dat'
SIZE 100M DEFAULT STORAGE (INITIAL 30M NEXT 30M MINEXTENTS 3 PCTINCREASE 0);
... (q2, q3, q4 同理)
-- 2. 建立範圍分區表
CREATE TABLE sales (
invoice_no NUMBER,
sale_date DATE NOT NULL,
...
) PARTITION BY RANGE (sale_date) (
PARTITION sales1999_q1 VALUES LESS THAN (TO_DATE('1999-04-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q1,
PARTITION sales1999_q2 VALUES LESS THAN (TO_DATE('1999-07-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q2,
PARTITION sales1999_q3 VALUES LESS THAN (TO_DATE('1999-10-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q3,
PARTITION sales1999_q4 VALUES LESS THAN (TO_DATE('2000-01-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q4
);
ALTER TABLE sales ADD PARTITION sales2000_q1
VALUES LESS THAN (TO_DATE('2000-04-01','YYYY-MM-DD')) TABLESPACE ts_sale2000q1;
ALTER TABLE sales DROP PARTITION sales1999_q1;
-- OS 層面刪除資料檔
rm /u1/oradata/sales/sales1999_q1.dat
ALTER TABLE sales SPLIT PARTITION sales1999_q4
AT (TO_DATE('1999-11-01','YYYY-MM-DD'))
INTO (
PARTITION sales1999_q4_p1 TABLESPACE ts_sales1999q4p1,
PARTITION sales1999_q4_p2 TABLESPACE ts_sales1999q4p2
);
TRUNCATE PARTITION:快速清空分區資料EXCHANGE PARTITION:與非分區表交換資料RENAME PARTITION:重新命名MODIFY PARTITION:調整儲存屬性SELECT segment_name, partition_name, tablespace_name
FROM user_segments
WHERE segment_name = 'SALES'
ORDER BY partition_name;
-- 匯出 1999 年四季分區
exp sales/pwd tables=sales:sales1999_q1 file=sales1999_q1.dmp
exp sales/pwd tables=sales:sales1999_q2 file=sales1999_q2.dmp
exp sales/pwd tables=sales:sales1999_q3 file=sales1999_q3.dmp
exp sales/pwd tables=sales:sales1999_q4 file=sales1999_q4.dmp
-- 匯入(需先建立對應表空間與分區)
imp sales/pwd file=sales1999_q1.dmp tables=(sales:sales1999_q1) ignore=y
... (q2-q4 同理)
INTERVAL 自動建立新分區