ALTER CLUSTER
目的
ALTER
CLUSTER
文を使用すると、クラスタの記憶特性および並列特性を再定義できます。
ノート:
クラスタ・キーの列番号および列名を変更するためにこの文を使用することはできません。また、クラスタを格納する表領域を変更することはできません。
関連項目:
クラスタの作成については、「CREATE CLUSTER」を参照してください。クラスタからの表の削除については、「DROP CLUSTER」および「DROP TABLE」を参照してください。クラスタへの表の追加については、「CREATE TABLE」の「physical_properties」を参照してください。
前提条件
クラスタが自分のスキーマ内にあるか、またはALTER
ANY
CLUSTER
システム権限が必要です。
構文
alter_cluster::=
(physical_attributes_clause::、size_clause::=、MODIFY PARTITION、allocate_extent_clause::=、deallocate_unused_clause::=、parallel_clause::=)
セマンティクス
IF EXISTS
IF EXISTS
は、既存の表を変更する場合に指定します。
ALTER VIEW
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
schema
クラスタが含まれているスキーマを指定します。schema
を指定しない場合、クラスタは自分のスキーマ内にあるとみなされます。
cluster
変更するクラスタの名前を指定します。
physical_attributes_clause
クラスタのPCTUSED
パラメータ、PCTFREE
パラメータおよびINITRANS
パラメータの値を変更します。
クラスタの記憶特性を変更するには、STORAGE
句を使用します。
関連項目:
-
パラメータの詳細は、「physical_attributes_clause」を参照してください。
-
その句の詳細は、「storage_clause」を参照してください。
物理属性の制限事項
クラスタの記憶域パラメータINITIAL
とMINEXTENTS
の値は変更できません。
SIZE
SIZE
句を使用すると、クラスタに割り当てられたデータ・ブロック中に格納されるクラスタ・キーの数を指定できます。
SIZEの制限事項
ハッシュ・クラスタではなく、索引クラスタのSIZE
パラメータのみを変更できます。
関連項目:
SIZE
パラメータの詳細は、「CREATE CLUSTER」および「クラスタの変更: 例」を参照してください。
MODIFY PARTITION
MODIFY
PARTITION
partition
allocate_extent_clause
を指定すると、クラスタ・パーティションの新しいエクステントを明示的に割り当てることができます。この操作は、レンジ・パーティション・ハッシュ・クラスタにのみ有効です。partition
には、クラスタ・パーティション名を指定します。
allocate_extent_clause
allocate_extent_clause
を指定すると、クラスタの新しいエクステントを明示的に割り当てることができます。この操作は、索引クラスタおよび非パーティション・ハッシュ・クラスタにのみ有効です。
allocate_extent_clause
を使用して明示的にエクステントを割り当てるときは、表を作成するときとは異なり、Oracle Databaseがクラスタの記憶域パラメータを評価して次に割り当てるエクステントの新しいサイズを決定することはありません。したがって、Oracle Databaseのデフォルト値が使用されるのを避けるにはSIZE
を指定してください。
関連項目:
この句の詳細は、「allocate_extent_clause」を参照してください。
deallocate_unused_clause
deallocate_unused_clause
句を使用すると、クラスタの終わりの未使用領域の割当てを明示的に解除し、解放された領域が他のセグメントで使用可能になります。
関連項目:
この句の詳細は、「deallocate_unused_clause」および「未使用領域の割当て解除: 例」を参照してください。
parallel_clause
parallel_clause
を指定すると、クラスタの問合せのデフォルト並列度を変更できます。
関連項目:
この句の詳細は、「CREATE
TABLE
」の「parallel_clause」を参照してください
例
次に、CREATE
CLUSTER
の「例」で作成したクラスタを変更する例を示します。
クラスタの変更: 例
次の文は、personnel
クラスタを変更します。
ALTER CLUSTER personnel SIZE 1024 CACHE;
この結果、各クラスタ・キー値に1024バイトが割り当てられ、CACHE属性が有効になります。データ・ブロックのサイズを2KBと想定した場合、このクラスタ内の今後のデータ・ブロックには、各ブロックに2つのクラスタ・キー(2KBを1024バイトで割った値)が含まれます。
未使用領域の割当て解除: 例
次の文は、language
クラスタから未使用領域の割当てを解除し、後で使用できるように30KBの未使用領域を保持します。
ALTER CLUSTER language DEALLOCATE UNUSED KEEP 30 K;
クラスタの変更: 例
次の文は、デフォルトのキー・サイズ(600)を持つクラスタを作成します。
CREATE CLUSTER EMP_DEPT (DEPTNO NUMBER(3))
SIZE 600
TABLESPACE USERS
STORAGE (INITIAL 200K
NEXT 300K
MINEXTENTS 2
PCTINCREASE 33);
次の文は、USER_CLUSTERS
を問い合せてクラスタ・メタデータを表示します。
SELECT CLUSTER_NAME, TABLESPACE_NAME, KEY_SIZE, CLUSTER_TYPE, AVG_BLOCKS_PER_KEY, MIN_EXTENTS, MAX_EXTENTS FROM USER_CLUSTERS;
CLUSTER_NAME TABLESPACE_NAME KEY_SIZE CLUST AVG_BLOCKS_PER_KEY MIN_EXTENTS MAX_EXTENTS
--------------- ------------------------------ ---------- ----- ------------------ ----------- -----------
EMP_DEPT USERS 600 INDEX 1 2147483645
次の文は、クラスタ・キー・サイズを変更します。
ALTER CLUSTER EMP_DEPT SIZE 1024;
次の文は、変更されたクラスタのメタデータを表示します。
SELECT CLUSTER_NAME, TABLESPACE_NAME, KEY_SIZE, CLUSTER_TYPE, AVG_BLOCKS_PER_KEY, MIN_EXTENTS, MAX_EXTENTS FROM USER_CLUSTERS;
CLUSTER_NAME TABLESPACE_NAME KEY_SIZE CLUST AVG_BLOCKS_PER_KEY MIN_EXTENTS MAX_EXTENTS
--------------- ------------------------------ ---------- ----- ------------------ ----------- -----------
EMP_DEPT USERS 1024 INDEX 1 2147483645
次の文は、EMP_DEPT
クラスタから未使用領域の割当てを解除し、後で使用できるように30KBの未使用領域を保持します。
ALTER CLUSTER EMP_DEPT DEALLOCATE UNUSED KEEP 30 K;
次の文は、変更されたクラスタのメタデータを表示します。
SELECT CLUSTER_NAME, TABLESPACE_NAME, KEY_SIZE, CLUSTER_TYPE, AVG_BLOCKS_PER_KEY, MIN_EXTENTS, MAX_EXTENTS FROM USER_CLUSTERS;
CLUSTER_NAME TABLESPACE_NAME KEY_SIZE CLUST AVG_BLOCKS_PER_KEY MIN_EXTENTS MAX_EXTENTS
--------------- ------------------------------ ---------- ----- ------------------ ----------- -----------
EMP_DEPT USERS 1024 INDEX 1 2147483645
Live SQL:
クラスタの作成と変更でOracle Live SQLに関連する例を参照および実行します。