轉載:http://blog.csdn.net/luxiaopengpeng/article/details/48178441
簇由一組共享多個數據塊的多個表組成,它將這些表的相關行一起存儲到相同數據塊中,這樣可以減少查詢數據所需的磁盤讀取量。創建簇后,用戶可以在簇中創建表,這些表稱為簇表。
例如有如下兩個表:student和achievement.。其中,student表存儲學生信息,需要使用SID字段(存儲學生ID);achievement表存儲學生成績信息,也需要使用SID字段。也就是說,student和achievement需要共享學生ID數據塊。
注意:如果用戶在自己的模式中創建簇,則必須具有create cluster權限和unlimited tablespace系統權限;如果想在其他模式中創建簇,則還必須具有create any cluster系統權限
創建簇和簇表
1.創建簇
創建簇,需要使用create cluster語句,例如創建一個名為stu_ach的簇,如下:
2.創建簇表
創建簇表,需要使用cluster子句指定所使用的簇和簇字段。
例如,在stu_ach簇中創建兩個簇表:student和achievement。如下:
提示:將student和achievement兩個表組成一個簇后,在物理上oracle會將這兩個表中每個學生的學生信息和該學生的所有成績信息存儲到相同的數據塊中。
現在向student表中添加記錄,如下:
insert into student values(1,'小明',24);
發現還無法向簇表中添加記錄。
注意:為了能夠向簇表中添加記錄,還需要首先為簇建立索引。
創建簇索引
簇索引與簇表不同,它並不存在於簇中,而是與普通索引一樣需要具有獨立的存儲空間。
例如,為簇stu_ach建立一個簇索引,如下:
管理簇
對一個簇的管理主要是修改簇和刪除簇。如果用戶想要管理簇,則必須具有alter any cluster系統權限。
修改簇
修改一個簇,主要是修改簇的如下屬性值:
1.物理存儲屬性,包括pctfree、pctused、initrans、maxtrans和storage。
2.為了存儲簇鍵值的所有行所需空間的平均值size。
3.默認的並行度。
刪除簇
1.刪除一個空簇:當一個簇中不包含簇表時,刪除該簇可以使用drop cluster cluster_name語句。
2.刪除一個含有簇表的簇:需要使用drop cluster...including tables語句,如下