簇由一組共享相同數據塊的多個表組成,它將這些表的相關行一起存儲到相同數據塊中,這樣可以減少查詢數據所需的磁盤讀取量。創建簇後,用戶可以在簇中創建表,這些表成為簇表。
例如,scott用戶中有一個員工信息表emp、部門信息表dept,這兩個表共享部門編號deptno列。當將emp和dept表組成簇後,在物理上Oracle將emp和dept表中有關每個部門的所有員工信息和部門信息行存儲到相同的數據塊中。因為簇將不同表的相關行一起存儲到相同的數據塊中,所以合理使用簇可以幫助減少查詢數據所需的磁盤讀取量。而對於經常單獨使用的表不應該使用簇。
創建簇的語法形式如下:
CREATE CLUSTER cluster_name(COLUMN date_type[,COLUMN date_type]...)
[PCTUSED 40 | INTEGER]
[PCTFREE 10 | INTEGER]
[SIZE INTEGER]
[INITRANS 1 | INTEGER]
[MAXTRANS 255 | INTEGER]
[TABLESPACE tablespace_name]
[STORAGE storage]
例1:
以SYSDBA角色登錄並賦予用戶相關權限:
GRANT ALTER ANY CLUSTER TO siege;
然後創建簇:
CREATE CLUSTER cluster_student(sid NUMBER)
PCTUSED 40
PCTFREE 10
SIZE 1024
STORAGE (
INITIAL 128k
NEXT 128k
MINEXTENTS 2
MAXEXTENTS 20
)TABLESPACE learning;