在實際操作中我們為了簡化Oracle數據庫中的大表管理,因而Oracle8推出了分區選項。分區主要是將表分離在N個不同的相關表空間上,我們用各種方法來支撐其無限膨脹的大表,給大表在物理一級的可管理性。
將大表分割成較小的分區可以改善表的維護、備份、恢復、事務及查詢性能。針對當前社保及電信行業的大量日常業務數據,可以推薦使用Oracle8的該選項。
分區的優點:
1 、增強可用性:如果表的一個分區由於系統故障而不能使用,表的其余好的分區仍然可以使用;
2 、減少關閉時間:如果系統故障只影響表的一部分分區,那麼只有這部分分區需要修復,故能比整個大表修復花的時間更少;
3 、維護輕松:如果需要重建表,獨立管理每個分區比管理單個大表要輕松得多;
4 、均衡I/O:可以把表的不同分區分配到不同的磁盤來平衡I/O改善性能;
5 、改善性能:對大表的查詢、增加、修改等操作可以分解到表的不同分區來並行執行,可使運行速度更快;
6 、分區對用戶透明,最終用戶感覺不到分區的存在。
分區的管理:
1 、分區表的建立:
某公司的每年產生巨大的銷售記錄,DBA向公司建議每季度的數據放在一個分區內,以下示范的是該公司1999年的數據(假設每月產生30M的數據),操作如下:
STEP1、建立表的各個分區的表空間:
- CREATE TABLESPACE ts_sale1999q1
- DATAFILE ‘/u1/oradata/sales/sales1999_q1.dat’
- SIZE 100M
- DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0)
- CREATE TABLESPACE ts_sale1999q2
- DATAFILE ‘/u1/oradata/sales/sales1999_q2.dat’
- SIZE 100M
- DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0)
- CREATE TABLESPACE ts_sale1999q3
- DATAFILE ‘/u1/oradata/sales/sales1999_q3.dat’
- SIZE 100M
- DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0)
- CREATE TABLESPACE ts_sale1999q4
- DATAFILE ‘/u1/oradata/sales/sales1999_q4.dat’
- SIZE 100M
- DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0)
STEP2、建立基於分區的表:
- 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 );