Oracle 11g Release 1 (11.1)——简单管理聚簇
http://docs.oracle.com/cd/B28359_01/server.111/b28310/clustrs.htm#i1006586
?
本文內(nèi)容
- 創(chuàng)建聚簇
- 變更聚簇
- 刪除聚簇
創(chuàng)建聚簇
創(chuàng)建聚簇
在你的模式中或在另一個(gè)用戶模式中,創(chuàng)建聚簇必須具有 CREATE CLUSTER(后者是 CREATE ANY CLUSTER ) 系統(tǒng)權(quán)限,以及計(jì)劃包含聚簇的表空間配額,或 UNLIMITED TABLESPACE 系統(tǒng)權(quán)限。
利用 CREATE CLUSTER 語(yǔ)句創(chuàng)建聚簇。下面語(yǔ)句用 deptno 列創(chuàng)建一個(gè)名為 emp_dept 的聚簇,該聚簇存儲(chǔ) emp 和 dept 表:
CREATE CLUSTER emp_dept (deptno NUMBER(3)) SIZE 600 TABLESPACE mytbs STORAGE (INITIAL 200K NEXT 300K MINEXTENTS 2 PCTINCREASE 33);如果沒有指定 INDEX 關(guān)鍵字,正如上面語(yǔ)句,那么會(huì)默認(rèn)創(chuàng)建一個(gè)索引聚簇。指定哈希參數(shù)(HASHKEYS、HASH IS 或 SINGLE TABLE HASHKEYS)可以創(chuàng)建一個(gè)哈希聚簇。
創(chuàng)建聚簇的表
若在聚簇中創(chuàng)建表,必須具有 CREATE TABLE 或 CREATE ANY TABLE 系統(tǒng)權(quán)限。但不需要表空間配額或 UNLIMITED TABLESPACE 系統(tǒng)權(quán)限。
利用帶 CLUSTER 子句的 CREATE TABLE 語(yǔ)句在聚簇中創(chuàng)建表。下面語(yǔ)句在 emp_dept 聚簇中創(chuàng)建 emp 和 dept 表:
CREATE TABLE EMP ( EMPNO NUMBER (4) NOT NULL, ENAME VARCHAR2 (10), JOB VARCHAR2 (9), MGR NUMBER (4), HIREDATE DATE, SAL NUMBER (7, 2), COMM NUMBER (7, 2), DEPTNO NUMBER (3) ) CLUSTER emp_dept ( deptno ); ? CREATE TABLE DEPT ( DEPTNO NUMBER (3) NOT NULL, DNAME VARCHAR2 (14), LOC VARCHAR2 (13) ) CLUSTER emp_dept ( deptno );備注:可以在 CREATE TABLE 語(yǔ)句為聚簇的表指定模式。聚簇的表可以在不同的模式。另外,列的名稱不需要匹配,但是結(jié)構(gòu)必須一致。
創(chuàng)建聚簇索引
創(chuàng)建聚簇索引必須具備以下條件:
- 包含聚簇
- 具有 CREATE ANY INDEX 系統(tǒng)權(quán)限
也必須具有計(jì)劃包含聚簇索引的表空間配額,或 UNLIMITED TABLESPACE 系統(tǒng)權(quán)限。
下面語(yǔ)句為聚簇 emp_dept 創(chuàng)建聚簇索引:
CREATE INDEX emp_dept_index ON CLUSTER emp_dept STORAGE (INITIAL 50 K NEXT 50 K MINEXTENTS 2 MAXEXTENTS 10 PCTINCREASE 33);ON CLUSTER 子句指定聚簇 emp_dept。語(yǔ)句也指定了很多對(duì)聚簇和聚簇索引的存儲(chǔ)設(shè)置。
變更聚簇
變更聚簇
若變更聚簇,你的模式必須包含聚簇,或具有 ALTER ANY CLUSTER 系統(tǒng)權(quán)限。你可以變更一個(gè)已存在的聚簇的如下設(shè)置:
- 物理屬性(INITRANS 和 storage 特性)
- 要求存儲(chǔ)所有聚簇行的平均空間大小
- 默認(rèn)的并行程度
參看 ALTER CLUSTER http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1.htm#SQLRF008
變更聚簇的表
利用 ALTER TABLE 語(yǔ)句來變更聚簇的表。但為一個(gè)聚簇的表,設(shè)置數(shù)據(jù)塊參數(shù)、事務(wù)參數(shù)或存儲(chǔ)參數(shù)會(huì)拋出錯(cuò)誤信息(ORA-01771,illegal option for a clustered table)。數(shù)據(jù)庫(kù)為所有聚簇的表使用聚簇參數(shù)。因此,使用 ALTER TABLE 語(yǔ)句只能添加或修改列,刪除非聚簇的列,或是添加刪除啟用禁用完整性約束,或是聚簇表的觸發(fā)器。
參考 Altering Tables http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006.htm#i1006494
變更聚簇索引
變更聚簇索引跟變更索引一樣。
刪除聚簇
刪除聚簇
若聚簇內(nèi)的表不再使用,則可以刪除聚簇。當(dāng)刪除聚簇時(shí),聚簇內(nèi)的所有表和相應(yīng)的聚簇索引也會(huì)被刪除。屬于聚簇的數(shù)據(jù)段和其索引段的空間會(huì)被釋放,被重新使用。
使用 DROP CLUSTER 語(yǔ)句,刪除一個(gè)不包含任何表的聚簇,及其索引。如下所示,刪除一個(gè)名為 emp_dept 的空的聚簇:
DROP CLUSTER emp_dept;使用帶 INCLUDING TABLES 子句的 DROP CLUSTER 語(yǔ)句,刪除一個(gè)包含一個(gè)或多個(gè)聚簇表的聚簇。如下所示,刪除一個(gè)非空的聚簇:
DROP CLUSTER emp_dept INCLUDING TABLES;使用帶 CASCADE CONSTRAINTS 子句的 DROP CLUSTER 語(yǔ)句,刪除聚簇,和聚簇的表及其依賴關(guān)系。如下所示:
DROP CLUSTER emp_dept INCLUDING TABLES CASCADE CONSTRAINTS;參看 DROP CLUSTER? http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_8007.htm#SQLRF01511
刪除聚簇的表
若刪除一個(gè)聚簇,你的模式必須包含聚簇,或具有 DROP ANY CLUSTER 系統(tǒng)權(quán)限。不需要額外的權(quán)限來刪除一個(gè)包含聚簇表的聚簇,即使聚簇的表?yè)碛姓卟皇悄恪?/p>
聚簇的表可以被單獨(dú)刪除,而不會(huì)影響聚簇,或是其他聚簇的表,或聚簇索引。刪除一個(gè)聚簇的表跟刪除一個(gè)非聚簇的表一樣。
備注:當(dāng)從聚簇刪除一個(gè)表時(shí),數(shù)據(jù)庫(kù)單獨(dú)刪除表的所有行。處于效率的考慮,若想刪除整個(gè)聚簇,則使用 DROP CLUSTER 語(yǔ)句。若只想聚簇中的一個(gè)表,則使用 DROP TABLE 語(yǔ)句。
刪除聚簇索引
刪除聚簇索引不會(huì)影響聚簇或其聚簇的表。但若沒有聚簇索引,就不能使用聚簇的表;想訪問聚簇,必須重新創(chuàng)建聚簇索引。有時(shí),存儲(chǔ)過程會(huì)刪除聚簇索引以重建破碎的聚簇索引。
聚簇?cái)?shù)據(jù)字典視圖
下面視圖顯示關(guān)于聚簇的信息:
| 視圖 | 描述 |
| DBA_CLUSTERS ALL_CLUSTERS USER_CLUSTERS | DBA_CLUSTERS 視圖描述數(shù)據(jù)庫(kù)中的所有聚簇。ALL_CLUSTERS 視圖描述用戶可以訪問的視圖。USER_CLUSTERS 視圖限制在聚簇的擁有者。這些的視圖的列包含由 DBMS_STATS 包或 ANALYZE 語(yǔ)句產(chǎn)生的統(tǒng)計(jì)信息。 |
| DBA_CLU_COLUMNS USER_CLU_COLUMNS | 這些視圖把表的列映射到聚簇的列。 |
總結(jié)
以上是生活随笔為你收集整理的Oracle 11g Release 1 (11.1)——简单管理聚簇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt学习之路3 ---信号与槽机制
- 下一篇: 【Matlab】private文件夹