日本語PDF

10.7 ALTER CLUSTER

目的

ALTER CLUSTER文を使用すると、クラスタの記憶特性および並列特性を再定義できます。

注意:

クラスタ・キーの列番号および列名を変更するためにこの文を使用することはできません。また、クラスタを格納する表領域を変更することはできません。

関連項目:

クラスタの作成については、「CREATE CLUSTER」を参照してください。クラスタからの表の削除については、「DROP CLUSTER」および「DROP TABLE」を参照してください。クラスタへの表の追加については、「CREATE TABLE」physical_properties」を参照してください。

前提条件

クラスタが自分のスキーマ内にあるか、またはALTER ANY CLUSTERシステム権限が必要です。

構文

parallel_clause::=

セマンティクス

schema

クラスタが含まれているスキーマを指定します。schemaを指定しない場合、クラスタは自分のスキーマ内にあるとみなされます。

cluster

変更するクラスタの名前を指定します。

physical_attributes_clause

クラスタのPCTUSEDパラメータ、PCTFREEパラメータおよびINITRANSパラメータの値を変更します。

クラスタの記憶特性を変更するには、STORAGE句を使用します。

関連項目:

物理属性の制限事項

クラスタの記憶域パラメータINITIALMINEXTENTSの値は変更できません。

SIZE

integer

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に関連する例を参照および実行します。