日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 11g Release 1 (11.1)——简单管理聚簇

發布時間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 11g Release 1 (11.1)——简单管理聚簇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://docs.oracle.com/cd/B28359_01/server.111/b28310/clustrs.htm#i1006586

?

本文內容

  • 創建聚簇
  • 變更聚簇
  • 刪除聚簇

創建聚簇


創建聚簇

在你的模式中或在另一個用戶模式中,創建聚簇必須具有 CREATE CLUSTER(后者是 CREATE ANY CLUSTER系統權限,以及計劃包含聚簇的表空間配額,或 UNLIMITED TABLESPACE 系統權限。

利用 CREATE CLUSTER 語句創建聚簇。下面語句用 deptno 列創建一個名為 emp_dept 的聚簇,該聚簇存儲 empdept 表:

CREATE CLUSTER emp_dept (deptno NUMBER(3)) SIZE 600 TABLESPACE mytbs STORAGE (INITIAL 200K NEXT 300K MINEXTENTS 2 PCTINCREASE 33);

如果沒有指定 INDEX 關鍵字,正如上面語句,那么會默認創建一個索引聚簇。指定哈希參數(HASHKEYSHASH ISSINGLE TABLE HASHKEYS)可以創建一個哈希聚簇。

創建聚簇的表

若在聚簇中創建表,必須具有 CREATE TABLECREATE ANY TABLE 系統權限。但不需要表空間配額或 UNLIMITED TABLESPACE 系統權限。

利用帶 CLUSTER 子句的 CREATE TABLE 語句在聚簇中創建表。下面語句在 emp_dept 聚簇中創建 empdept 表:

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 語句為聚簇的表指定模式。聚簇的表可以在不同的模式。另外,列的名稱不需要匹配,但是結構必須一致。

創建聚簇索引

創建聚簇索引必須具備以下條件:

  • 包含聚簇
  • 具有 CREATE ANY INDEX 系統權限

也必須具有計劃包含聚簇索引的表空間配額,或 UNLIMITED TABLESPACE 系統權限。

下面語句為聚簇 emp_dept 創建聚簇索引:

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。語句也指定了很多對聚簇和聚簇索引的存儲設置。

變更聚簇


變更聚簇

若變更聚簇,你的模式必須包含聚簇,或具有 ALTER ANY CLUSTER 系統權限。你可以變更一個已存在的聚簇的如下設置:

  • 物理屬性(INITRANS 和 storage 特性)
  • 要求存儲所有聚簇行的平均空間大小
  • 默認的并行程度

參看 ALTER CLUSTER http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1.htm#SQLRF008

變更聚簇的表

利用 ALTER TABLE 語句來變更聚簇的表。但為一個聚簇的表,設置數據塊參數、事務參數或存儲參數會拋出錯誤信息(ORA-01771,illegal option for a clustered table)。數據庫為所有聚簇的表使用聚簇參數。因此,使用 ALTER TABLE 語句只能添加或修改列,刪除非聚簇的列,或是添加刪除啟用禁用完整性約束,或是聚簇表的觸發器。

參考 Altering Tables http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006.htm#i1006494

變更聚簇索引

變更聚簇索引跟變更索引一樣。

刪除聚簇


刪除聚簇

若聚簇內的表不再使用,則可以刪除聚簇。當刪除聚簇時,聚簇內的所有表和相應的聚簇索引也會被刪除。屬于聚簇的數據段和其索引段的空間會被釋放,被重新使用。

使用 DROP CLUSTER 語句,刪除一個不包含任何表的聚簇,及其索引。如下所示,刪除一個名為 emp_dept 的空的聚簇:

DROP CLUSTER emp_dept;

使用帶 INCLUDING TABLES 子句的 DROP CLUSTER 語句,刪除一個包含一個或多個聚簇表的聚簇。如下所示,刪除一個非空的聚簇:

DROP CLUSTER emp_dept INCLUDING TABLES;

使用帶 CASCADE CONSTRAINTS 子句的 DROP CLUSTER 語句,刪除聚簇,和聚簇的表及其依賴關系。如下所示:

DROP CLUSTER emp_dept INCLUDING TABLES CASCADE CONSTRAINTS;

參看 DROP CLUSTER? http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_8007.htm#SQLRF01511

刪除聚簇的表

若刪除一個聚簇,你的模式必須包含聚簇,或具有 DROP ANY CLUSTER 系統權限。不需要額外的權限來刪除一個包含聚簇表的聚簇,即使聚簇的表擁有者不是你。

聚簇的表可以被單獨刪除,而不會影響聚簇,或是其他聚簇的表,或聚簇索引。刪除一個聚簇的表跟刪除一個非聚簇的表一樣。

備注:當從聚簇刪除一個表時,數據庫單獨刪除表的所有行。處于效率的考慮,若想刪除整個聚簇,則使用 DROP CLUSTER 語句。若只想聚簇中的一個表,則使用 DROP TABLE 語句。

刪除聚簇索引

刪除聚簇索引不會影響聚簇或其聚簇的表。但若沒有聚簇索引,就不能使用聚簇的表;想訪問聚簇,必須重新創建聚簇索引。有時,存儲過程會刪除聚簇索引以重建破碎的聚簇索引。

聚簇數據字典視圖


下面視圖顯示關于聚簇的信息:

視圖描述
DBA_CLUSTERS
ALL_CLUSTERS
USER_CLUSTERS
DBA_CLUSTERS 視圖描述數據庫中的所有聚簇。ALL_CLUSTERS 視圖描述用戶可以訪問的視圖。USER_CLUSTERS 視圖限制在聚簇的擁有者。這些的視圖的列包含由 DBMS_STATS 包或 ANALYZE 語句產生的統計信息。
DBA_CLU_COLUMNS
USER_CLU_COLUMNS

這些視圖把表的列映射到聚簇的列。

總結

以上是生活随笔為你收集整理的Oracle 11g Release 1 (11.1)——简单管理聚簇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。