構文
ALTER INDEX [schema.]index REBUILD [PARAMETERS ('rebuild_params [physical_storage_params]' ) ] [{ NOPARALLEL | PARALLEL [ integer ] }] ;
または
ALTER INDEX [schema.]index REBUILD ONLINE [PARAMETERS ('rebuild_params [physical_storage_params]' ) ] [{ NOPARALLEL | PARALLEL [ integer ] }] ;
または
ALTER INDEX [schema.]index REBUILD PARTITION partition [PARAMETERS ('rebuild_params [physical_storage_params]' ) ];
用途
空間索引、またはパーティション索引の指定されたパーティションを再作成します。
キーワードおよびパラメータ
値 | 説明 |
---|---|
REBUILD_PARAMS |
空間索引の再作成に使用する索引パラメータを、コマンド文字列で指定します。 |
index_status=cleanup |
オンラインの再作成操作(ALTER INDEX REBUILD ONLINE)では、以前のバージョンの索引に関連する表に対して削除操作を実行します。 |
layer_gtype |
すべてのジオメトリが指定されたジオメトリ・タイプであることを確認します。この値は、SDO_GTYPEの「ジオメトリ・タイプ」列の値である必要があります(ただし、UNKNOWN_GEOMETRYを除く)。また、POINTを指定すると、点データの処理を最適化できます。データ型はVARCHAR2です。 |
sdo_dml_batch_size |
コミット操作の後、更新のバッチごとに処理する索引更新の数を指定します。デフォルト値は1000です。たとえば、空間表に3500行を挿入し、その後コミット操作を実行すると、空間索引表に対する更新は、4つのバッチの挿入操作(1000、1000、1000および500)で実行されます。詳細は、CREATE INDEX文の「使用上の注意」を参照してください。データ型はNUMBERです。デフォルトは1000です。 |
sdo_indx_dims |
索引付けする次元数を指定します。たとえば、値に2を指定すると、最初の2次元にのみ索引付けします。実際の次元数以下の値を指定する必要があります。3次元ジオメトリの使用方法については、「3次元の空間オブジェクト」を参照してください。データ型はNUMBERです。デフォルトは2です。 |
sdo_max_memory |
空間索引作成または再作成操作を実行するために割り当てることができる最大メモリー量を指定します。指定できる値は、64000 (約64KB)から200000000 (約200MB)です。指定されたバイト数を割り当てることができない場合は、64000 (約64KB)が割り当てられます。デフォルトより大きい値を指定すると、索引の作成のパフォーマンスが大幅に向上します(ただし、使用可能なメモリーの20%を超える値は指定しないでください)。データ型はNUMBERです。デフォルトは10000000 (約10MB)です。 |
sdo_rtr_pctfree |
索引の作成時は空にしておく、各索引ツリー・ノードのスロットの最小割合を指定します。空のスロットは、後で表に新しいデータを挿入したときにデータが書き込まれます。値は0から50の範囲です。データ型はNUMBERです。デフォルトは10です。 |
PHYSICAL_STORAGE_PARAMS |
空間索引のデータ表の再作成で使用される記憶域パラメータを指定します。空間索引データ表は、指定された形式を使用した標準のOracle表です。CREATE TABLE文のSTORAGE句内で使用可能なすべての物理記憶域パラメータがサポートされているわけではありません。サポートされているサブセットのリストを次に示します。 |
tablespace |
索引データ表が作成される表領域を指定します。このパラメータは、CREATE TABLE文のSTORAGE句内のTABLESPACEと同じです。 |
initial |
このパラメータは、CREATE TABLE文のSTORAGE句内のINITIALと同じです。 |
next |
このパラメータは、CREATE TABLE文のSTORAGE句内のNEXTと同じです。 |
minextents |
このパラメータは、CREATE TABLE文のSTORAGE句内のMINEXTENTSと同じです。 |
maxextents |
このパラメータは、CREATE TABLE文のSTORAGE句内のMAXEXTENTSと同じです。 |
pctincrease |
このパラメータは、CREATE TABLE文のSTORAGE句内のPCTINCREASEと同じです。 |
{ NOPARALLEL | PARALLEL [ integer ] } |
索引の再作成および索引を使用する後続の問合せおよびDML操作にシリアル(NOPARALLEL)実行を使用するかパラレル(PARALLEL)実行を使用するかを制御します。パラレル実行の場合、並列度を示す整数値を指定できます。PARALLELキーワードの使用に適用されるガイドラインおよび制限事項については、CREATE INDEX文の「使用上の注意」を参照してください。デフォルトはNOPARALLELです。(整数値を指定せずにPARALLELを指定した場合、Oracle Databaseによって最適な並列度が計算されます。) |
前提条件
索引タイプおよび索引の実装タイプに対する実行権限が必要です。
変更する空間索引が処理中ではないことが必要です。
使用上の注意
ALTER INDEX REBUILD 'rebuild_params'文は、指定されたパラメータを使用して、索引を再作成します。空間索引の作成とは、基になる表で空間索引付けされる列にある各行に対して索引データを作成し、その索引データを指定された形式で表に挿入することです。基になる表にあるすべての行は、索引データの挿入がコミットされる前に処理されます。これには、適切なロールバック・セグメント領域が必要です。
ONLINEキーワードは、索引をブロックせずに索引を再作成します。つまり、空間索引の再作成中、問合せはそれを使用することが可能です。ただし、再作成操作の間に発行されたすべての問合せが完了したら、SQL文を次の形式で入力し、古い索引情報(MDRT表内)を削除する必要があります。
ALTER INDEX [schema.]index REBUILD ONLINE PARAMETERS ('index_status=cleanup');
ONLINEキーワードの使用には次の制限事項が適用されます。
索引が再作成されている間、許可される操作は問合せのみです。索引の再作成中は、索引に影響を与える、挿入、更新および削除の操作はブロックされます。また、索引に影響を与える、挿入、更新または削除の操作を実行している間は、オンラインの再作成がブロックされます。
'sdo_non_leaf_tbl=TRUE'
パラメータを使用して索引が作成されている場合、再作成操作にONLINEキーワードは使用できません。
パーティション空間索引にONLINEキーワードは使用できません。
リリース12.1からは、ALTER INDEX REBUILD文では、以前に指定した索引作成パラメータが再利用されます。新しいまたは変更されたパラメータが渡された場合、新しいパラメータは前のパラメータとマージされ、変更されたパラメータは前のパラメータを上書きします。
layer_gtype
キーワードを使用してレイヤー内のデータを1つのジオメトリ・タイプに制限する方法の詳細は、「特定のジオメトリ・タイプへのデータの制限」を参照してください。
パーティション化された空間索引の場合、再作成される各パーティションに対して個別のALTER INDEX REBUILD文を使用する必要があります。
ローカル・パーティション空間索引を使用する場合は、「ローカル・パーティション空間索引の作成」の手順に従います。
使用可能なパラメータおよびPARALLELキーワードの使用方法については、CREATE INDEX文の「使用上の注意」を参照してください。
例
次の例では、OLDINDEXを再作成し、索引データ表が作成される表領域を指定します。
ALTER INDEX oldindex REBUILD PARAMETERS('tablespace=TBS_3');
関連項目
『Oracle Database SQL言語リファレンス』のALTER TABLEおよびALTER INDEX(パーティションをメンテナンスするための句)