ALTER INDEX

目的

ALTER INDEX文を使用すると、既存の索引を変更または再作成できます。

関連項目:

索引の作成については、「CREATE INDEX」を参照してください。

前提条件

索引が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY INDEXシステム権限が必要です。

MONITORING USAGE句を実行する場合は、索引は自分のスキーマ内に存在する必要があります。

ドメイン索引を変更する場合は、索引の索引タイプに対してEXECUTEオブジェクト権限が必要です。

オブジェクト権限は、個々の索引パーティションまたはサブパーティションではなく、親索引に付与されている必要があります。

索引パーティションの変更、再作成または分割、索引サブパーティションの変更または再作成を行う場合は、表領域割当て制限が必要です。

構文

parallel_clause::=

logging_clause::=

partial_index_clause::=

rebuild_clause::=

(parallel_clause::=physical_attributes_clause::=index_compression::=logging_clause::=partial_index_clause::=)

(ODCI_parametersについては、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。XMLIndex_parameters_clauseについては、『Oracle XML DB開発者ガイド』を参照してください。

index_compression::=

prefix_compression::=

advanced_index_compression::=

rename_index_partition::=

drop_index_partition::=

index_partition_description::=

(segment_attributes_clause::=index_compression::=)

ノート:

USABLEキーワードとUNUSABLEキーワードは、split_index_partition句にindex_partition_descriptionが指定されているときにはサポートされません。

segment_attributes_clause::=

(physical_attributes_clause::=TABLESPACE SET: ALTER INDEXではサポートされていません、logging_clause::=)

セマンティクス

schema

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

index

変更する索引の名前を指定します。

索引の変更の制限事項

索引の変更には、次の制限事項があります。

  • indexがドメイン索引である場合は、PARAMETERS句、RENAME句、rebuild_clause(PARAMETERS句の有無に関係なく)、parallel_clauseまたはUNUSABLE句のみ指定できます。その他のすべての句は無効です。

  • LOADINGまたはFAILEDのマークが付いているドメイン索引は、変更または名前の変更ができません。索引にFAILEDのマークが付いている場合、REBUILD句のみ指定できます。

関連項目:

ドメイン索引のLOADINGおよびFAILED状態の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

deallocate_unused_clause

deallocate_unused_clause句を使用すると、索引の終わりの未使用領域の割当てを明示的に解除し、解放された領域が表領域内の他のセグメントで使用可能になります。

indexがレンジ・パーティションまたはハッシュ・パーティションである場合、各索引パーティションの未使用領域の割当てが解除されます。indexがコンポジット・パーティション表のローカル索引である場合、各索引サブパーティションの未使用領域の割当てが解除されます。

領域の割当て解除の制限事項

領域の割当て解除には、次の制限事項があります。

  • この句は、一時表の索引に対して指定できません。

  • この句およびrebuild_clauseは、指定できません。

この句の詳細は、deallocate_unused_clause」を参照してください。

KEEP integer

KEEP句を使用すると、割当てを解除した後に索引に残す、最高水位標を超えるバイト数を指定できます。残りのエクステント数がMINEXTENTSより少ない場合、MINEXTENTSは現行のエクステント数に設定されます。初期エクステントがINITIALより小さくなると、INITIALは初期エクステントの現行の値に設定されます。KEEPを指定しないと、すべての未使用領域が解放されます。

この句の詳細は、「ALTER TABLE」を参照してください。

allocate_extent_clause

allocate_extent_clauseを使用すると、索引の新しいエクステントを明示的に割り当てることができます。ハッシュ・パーティション表のローカル索引に対して、新規エクステントが索引の各パーティションに割り当てられます。

エクステントの割当ての制限事項

この句は、一時表の索引、レンジ・パーティションまたはコンポジット・パーティション索引に対しては指定できません。

この句の詳細は、allocate_extent_clause」を参照してください。

shrink_clause

この句を使用すると、索引セグメントを縮小化できます。ALTER INDEX ... SHRINK SPACE COMPACTを指定することは、ALTER INDEX ... COALESCEを指定することと同じです。

この句の詳細は、「CREATE TABLE」のshrink_clause」を参照してください。

索引セグメントの縮小の制限事項

この句は、ビットマップ結合索引またはファンクション索引に対しては指定できません。

parallel_clause

PARALLEL句を使用すると、索引の問合せおよびDMLに対するデフォルトの並列度を変更できます。

索引のパラレル化の制限事項

この句は、一時表の索引に対して指定できません。

この句の詳細は、「CREATE TABLE」のparallel_clause」を参照してください。

physical_attributes_clause

physical_attributes_clauseを使用すると、非パーティション索引、パーティション索引のすべてのパーティションおよびサブパーティション、指定されたパーティション、または指定されたパーティションのすべてのサブパーティションに対するパラメータの値を変更できます。

関連項目:

索引の物理属性の制限事項

索引の物理属性には、次の制限事項があります。

  • この句は、一時表の索引に対して指定できません。

  • 索引の変更中は、PCTUSEDパラメータを指定できません。

  • PCTFREEパラメータは、rebuild_clausemodify_index_default_attrs句またはsplit_index_partition句の一部としてのみ指定できます。

storage_clause

storage_clauseを使用すると、非パーティション索引、索引パーティション、またはパーティション索引のすべてのパーティションの記憶域パラメータ、あるいはパーティション索引の記憶域パラメータのデフォルト値を変更できます。この句の詳細は、storage_clause」を参照してください。

logging_clause

logging_clauseを使用すると、索引のロギング属性を変更できます。REBUILD句も指定すると、この新しい設定は再構築操作に影響します。REBUILD句でロギングに異なる値を指定した場合、索引および再構築操作のロギング属性として指定された最後のロギング値が使用されます。

索引セグメントには、実表の属性と異なるロギング属性、および同じ実表の他の索引セグメントと異なるロギング属性を指定できます。

索引のログの制限事項

この句は、一時表の索引に対して指定できません。

関連項目:

partial_index_clause

partial_index_clauseを使用すると、索引を全索引または部分索引に変更できます。INDEXING FULLを指定すると、索引を全索引に変更できます。INDEXING PARTIALを指定すると、索引を部分索引に変更できます。この句は、パーティション表の索引に対してのみ有効です。この句のセマンティクスの詳細は、CREATE INDEX「partial_index_clause」を参照してください。

RECOVERABLE | UNRECOVERABLE

これらのキーワードは以前のリリースで非推奨になったもので、それぞれLOGGINGおよびNOLOGGINGに置き換えられています。RECOVERABLEおよびUNRECOVERABLEは、下位互換性のためにサポートされていますが、LOGGINGおよびNOLOGGINGキーワードを使用することをお薦めします。

RECOVERABLEは、パーティション表またはLOBの記憶特性の作成時には無効なキーワードです。UNRECOVERABLEは、パーティション表または索引構成表の作成時には無効なキーワードです。また、CREATE INDEXAS副問合せ句を使用してのみ指定できます。

rebuild_clause

rebuild_clauseを使用すると、既存の索引、あるいはパーティションまたはサブパーティションのいずれかを再構築できます。索引にUNUSABLEのマークが付いている場合、正常に再構築するとUSABLEになります。ファンクション索引も使用可能にします。索引の基になるファンクションが存在しない場合、再構築文は正常に実行されません。

ノート:

索引構成表の2次索引を再構築する場合、Oracle Databaseは、索引が作成されたときの論理ROWIDに含まれる主キー列を保持します。したがって、COMPATIBLE初期化パラメータが10.0.0未満に設定された状態で索引が作成された場合、再構築された索引には、索引キーと、索引キーには含まれない表の主キー列が含まれます。COMPATIBLE初期化パラメータが10.0.0以上に設定された状態で索引が作成された場合、再構築された索引には、索引キーと、索引キーに含まれる主キー列を含む、表のすべての主キー列が含まれます。

索引の再構築の制限事項

索引の再構築には、次の制限事項があります。

  • 一時表の索引は、再構築できません。

  • INVALIDのマークが付いているビットマップ索引は再構築できません。制約を削除してからそれを再作成する必要があります。

  • パーティション索引全体は、再構築できません。PARTITION句で説明するとおり、各パーティションまたはサブパーティションを再構築する必要があります。

  • 同じ文でdeallocate_unused_clauserebuild_clauseを指定することはできません。

  • 索引全体(ALTER INDEX)またはパーティション(ALTER INDEX ... MODIFY PARTITION)に対して、PCTFREEパラメータ値を変更できません。ALTER INDEX文の他のすべての形式では、PCTFREEを指定できます。

  • ドメイン索引の場合

    • 指定できるのは、PARAMETERS句(索引または索引のパーティション用)またはparallel_clauseのみです。その他の再構築の句は無効です。

    • 索引にIN_PROGRESSのマークが付いていない場合にのみ、索引を再構築できます。

    • 索引にIN_PROGRESSまたはFAILEDのマーク、パーティションにIN_PROGRESSのマークが付いていない場合にのみ、索引パーティションを再構築できます。

  • ローカル索引は再構築できませんが、ALTER INDEX ... REBUILD PARTITIONでローカル索引のパーティションを再構築できます。

  • ハッシュ・パーティションまたはハッシュ・サブパーティションのローカル索引に指定できるパラメータは、TABLESPACEのみです。

  • 遅延可能一意制約を適用するために使用されるオンライン索引は、再構築できません。

PARTITION句

PARTITION句を使用すると、索引の1つのパーティションを再構築できます。この句は、索引パーティションを別の表領域に移動したり、作成時の物理属性を変更するために使用できます。

ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

パーティションの再構築の制限事項

コンポジット・パーティション表のローカル索引に対してはこの句を指定できません。かわりに、REBUILD SUBPARTITION句を使用してください。

関連項目:

パーティションのメンテナンス操作の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』および「使用禁止の索引パーティションの再構築: 例」を参照してください。

SUBPARTITION句

SUBPARTITION句を使用すると、索引の1つのサブパーティションを再構築できます。この句を使用して、索引サブパーティションを他の表領域に移動することもできます。TABLESPACEを指定しないと、サブパーティションは同じ表領域に再構築されます。

ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

索引サブパーティションの変更の制限事項

パラメータTABLESPACEONLINEおよびparallel_clause以外は、サブパーティションに対して指定できません。

REVERSE | NOREVERSE

索引ブロックのバイトを逆順に格納するかどうかを示します。

  • REVERSEを指定すると、索引の再構築時に、索引ブロックのバイトが逆順で格納され、ROWIDが除外されます。

  • NOREVERSEを指定すると、索引の再構築時に、逆順にせずに索引ブロックのバイトが格納されます。NOREVERSEキーワードを指定せずにREVERSE索引を再構築すると、再構築された索引は、逆キーの索引になります。

逆索引の制限事項

逆索引には、次の制限事項があります。

  • ビットマップ索引または索引構成表は逆順には格納できません。

  • パーティションまたはサブパーティションに対して、REVERSEまたはNOREVERSEを指定できません。

parallel_clause

parallel_clauseを使用すると、索引の再構築をパラレル化して索引自体の並列度を変更できます。その索引に対する後続のすべての操作は、次にデータ定義言語(DDL)文のparallel_clauseによって上書きされるまで、この句に指定された並列度で実行されます。次の例外があります。

  • 索引を再構築する前にALTER SESSION DISABLE PARALLEL DDLが指定されている場合は、索引がシリアルで再構築され、索引の並列度が1に変更されます。

  • 索引を再構築する前にALTER SESSION FORCE PARALLEL DDLが指定されている場合は、索引がパラレルで再構築され、索引の並列度がALTER SESSION文で指定された値に変更されます。値がない場合は、DEFAULTに変更されます。

TABLESPACE句

再構築された索引、索引パーティションまたは索引サブパーティションが格納される表領域を指定します。デフォルトは、再構築の前に索引またはパーティションが格納されていた表領域です。

index_compression

index_compression句を使用して、索引の索引圧縮を有効化または無効化します。prefix_compression句を指定して、索引の接頭辞圧縮を有効化または無効化します。advanced_index_compression句を指定して、索引の拡張索引圧縮を有効化または無効化します。

index_compression句は、CREATE INDEXおよびALTER INDEXに対して同じセマンティクスを持ちます。これらの句の詳細は、CREATE INDEXindex_compressionを参照してください。

ONLINE句

ONLINEを指定すると、表またはパーティションのDML操作を索引の再構築中に可能にするかどうかを指定できます。

オンライン索引の制限事項

オンライン索引には、次の制限事項があります。

  • オンライン索引の作成中は、パラレルDMLはサポートされません。ONLINEを指定し、続いてパラレルDML文を発行すると、Oracle Databaseはエラーを戻します。

  • ビットマップ結合索引またはクラスタ索引には、ONLINEを指定できません。

  • 索引構成表の一意でない2次索引の場合、索引構成表内の索引キー列の数と論理ROWIDの主キー列の数の合計は、32以下にする必要があります。論理ROWIDは、索引キーに含まれる列を除外します。

logging_clause

ALTER INDEX ... REBUILD操作をログに記録するかどうかを指定します。

この句の詳細は、logging_clause」を参照してください。

PARAMETERS句

この句は、トップレベルのALTER INDEX文およびrebuild_clauseのドメイン索引に対してのみ有効です。この句は、未解析のまま適切なODCI索引タイプ・ルーチンに渡されたパラメータ文字列を指定します。

パラメータ文字列の最大長は1,000文字です。

索引全体を変更または再構築する場合、文字列は索引レベルのパラメータを参照する必要があります。索引のパーティションを再構築する場合、文字列はパーティション・レベルのパラメータを参照する必要があります。

indexUNUSABLEのマークが付いている場合、パラメータを変更するのみではUSABLEにはなりません。UNUSABLEのマークが付いた索引を使用可能にするには、その索引を再構築する必要があります。

Oracle Textがインストール済の場合、Oracle Text固有のパラメータを使用するOracle Textのドメイン索引を再構築することができます。パラメータの詳細は、『Oracle Textリファレンス』を参照してください。

PARAMETERS句の制限事項

indexIN_PROGRESSおよびFAILEDのマークが付いておらず、索引パーティションにIN_PROGRESSのマークが付いておらず、変更するパーティションにFAILEDのマークが付いていない場合にのみ、索引パーティションを変更できます。

関連項目:

XMLIndex_parameters_clause

この句は、XMLIndex索引に対してのみ有効です。この句は、XMLIndex実装を定義するパラメータ文字列を指定します。

パラメータ文字列の最大長は1,000文字です。

索引全体を変更または再構築する場合、文字列は索引レベルのパラメータを参照する必要があります。索引のパーティションを再構築する場合、文字列はパーティション・レベルのパラメータを参照する必要があります。

indexUNUSABLEのマークが付いている場合、パラメータを変更するのみではUSABLEにはなりません。UNUSABLEのマークが付いた索引を使用可能にするには、その索引を再構築する必要があります。

関連項目:

XMLIndex_parameters_clauseの構文およびセマンティクスを含むXMLIndexの詳細は、『Oracle XML DB開発者ガイド』を参照してください

XMLIndex_parameters_clauseの制限事項

indexIN_PROGRESSおよびFAILEDのマークが付いておらず、索引パーティションにIN_PROGRESSのマークが付いておらず、変更するパーティションにFAILEDのマークが付いていない場合にのみ、索引パーティションを変更できます。

{ DEFERRED | IMMEDIATE } INVALIDATION

この句を使用すると、索引の再構築中または索引にUNUSABLEのマークを付けているときにデータベースで依存カーソルがいつ無効化されるかを制御できます。

  • DEFERRED INVALIDATIONを指定した場合、データベースでは可能な場合、依存カーソルの無効化を回避または遅延します。

  • IMMEDIATE INVALIDATIONを指定した場合、データベースでは、Oracle Database 12cリリース1 (12.1)以前のリリースでの動作と同様に、依存カーソルを即時に無効にします。これはデフォルトです。

この句を省略した場合、いつカーソルが無効になるかは、CURSOR_INVALIDATION初期化パラメータの値によって決定されます。

関連項目:

COMPILE句

この句を使用すると、無効な索引を明示的に再コンパイルできます。ドメイン索引の場合、この句は、システム管理されたドメイン索引をサポートするように基礎となる索引タイプが変更され、その結果として既存のドメイン索引がINVALIDとマークされた場合に有効です。これにより、このALTER INDEX文によって、ドメイン索引はユーザー管理されたドメイン索引からシステム管理されたドメイン索引に移行されます。すべてのタイプの索引の場合、ALTER TABLE文によって索引がINVALIDとマークされている場合にこの句が役立ちます。この場合、このALTER INDEX文は、再作成しないで索引を再検証します。

関連項目:

システム管理されたドメイン索引の作成の詳細は、「CREATE INDEXTYPE」の「storage_table_clause」および『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

ENABLE句

ENABLEは、使用禁止になったファンクション索引(ALTER INDEX ... DISABLE文によって使用禁止になったものか、その索引で使用されるユーザー定義ファンクションが削除または置換されたために使用禁止になったもののいずれか)にのみ適用されます。次の条件が該当する場合、この句によって、このような索引が使用可能になります。

  • ファンクションが現在有効な場合。

  • 現行のファンクションのシグネチャが、索引が作成された場合のファンクションのシグネチャと一致する場合。

  • ファンクションに現在DETERMINISTICのマークが付いている場合

ファンクション索引の有効化の制限事項

ENABLE句には、次の制限事項があります。

  • ENABLEと同じ文内では、ALTER INDEXの他の句の指定はできません。

  • この句は、一時表の索引に対して指定できません。かわりに、その索引を削除し、再作成する必要があります。DBMS_METADATAパッケージを使用して、その索引の作成DDLを取得できます。

DISABLE句

DISABLEは、ファンクション索引のみに適用されます。この句を使用してファンクション索引を使用禁止にします。たとえば、ファンクションの本体を処理する場合に、これを行います。その後、ENABLEキーワードを使用して、索引を再構築、または別のALTER INDEX文を指定できます。

USABLE | UNUSABLE

索引、索引パーティションまたは索引サブパーティションにUNUSABLEのマークを付けるには、UNUSABLEを指定します。索引、索引パーティションまたは索引サブパーティションにUNUSABLEのマークを付けると、そのオブジェクトに割り当てられていた領域はすぐに解放されます。使用禁止の索引を使用可能にする場合、再構築するか、または削除して再作成する必要があります。1つのパーティションにUNUSABLEのマークが付いている場合も、同じ索引の他のパーティションは有効です。その索引を必要とする文が使用禁止のパーティションにアクセスしない場合、その文を実行できます。また、使用禁止のパーティションは、分割または名前を変更してから再構築できます。詳細は、CREATE INDEX ... USABLE | UNUSABLEを参照してください。

ONLINE

ONLINEを指定すると、表またはパーティションに対するDML操作を許可しながら、索引にUNUSABLEのマークを付けることを指示できます。この句を指定すると、データベースは索引セグメントを削除しないようになります。

索引へのUnusableのマーク付けの制限事項

索引へのUnusableのマーク付けには、次の制限事項が適用されます。

  • 一時表の索引に対してUNUSABLEは指定できません。

  • グローバル索引がパーティション・メンテナンス操作中にUNUSABLEにマーク付けされた場合、データベースは使用禁止索引セグメントを削除しません。

VISIBLE | INVISIBLE

この句を使用すると、オプティマイザで索引を参照可能にするかどうかを指定できます。この句の詳細は、「CREATE INDEX」の「VISIBLE | INVISIBLE」を参照してください。

RENAME句

この句を指定すると、索引の名前を変更できます。new_index_nameは単一の識別子で、スキーマ名は含まれません。

索引の名前変更の制限事項

ドメイン索引では、indexおよびindexのパーティションのいずれも、IN_PROGRESS状態またはFAILED状態にできません。

関連項目:

COALESCE句

COALESCEを指定すると、ブロックを再利用するために、索引ブロックの内容を空きブロックにマージできます(可能な場合)。

CLEANUP

CLEANUPを指定すると、表のパーティション・メンテナンス操作で以前に削除または切り捨てられたレコードに対する孤立した索引エントリを削除できます。

孤立した索引エントリが索引に含まれているかどうかを判断するには、USER_DBA_ALL_INDEXESデータ・ディクショナリ・ビューのORPHANED_ENTRIES列を問い合せます。詳細は、『Oracle Databaseリファレンス』を参照してください。

ONLY

索引ブロックを結合せずに索引をクリーン・アップする場合は、ONLYを指定します。

parallel_clause

parallel_clauseを使用すると、結合操作をパラレル化するかどうかを指定できます。

この句の詳細は、「CREATE TABLE」のparallel_clause」を参照してください。

索引ブロックの結合の制限事項

索引ブロックの結合には、次の制限事項があります。

  • この句は、一時表の索引に対して指定できません。

  • この句は、索引構成表の主キー索引に対して指定できません。かわりにALTER TABLECOALESCE句を使用します。

関連項目:

MONITORING USAGE | NOMONITORING USAGE

この句を使用すると、索引の使用を監視するかどうかを決定できます。

  • MONITORING USAGEを指定すると、索引の監視が開始されます。まず、索引の使用に関する既存の情報が削除され、ALTER INDEX ... NOMONITORING USAGE文が次に実行されるまで、索引の使用が監視されます。

  • NOMONITORING USAGEを指定すると、索引の監視を終了できます。

このALTER INDEX ... NOMONITORING USAGE文が発行された後、索引が使用されたかどうかを調べるには、USER_OBJECT_USAGEデータ・ディクショナリ・ビューのUSED列を問い合せます。

関連項目:

USER_OBJECT_USAGEデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

UPDATE BLOCK REFERENCES句

UPDATE BLOCK REFERENCES句は、索引構成表の通常のドメイン索引に対してのみ有効です。この句を指定すると、主キーによって識別されるブロックの適切なデータベース・アドレスとともに索引行の一部として格納され、失効したと推測されるすべてのデータ・ブロック・アドレスを更新することができます。

ドメイン索引では、AlterIndexUpdBlockRefsに設定されたalter_optionパラメータでODCIIndexAlterルーチンが実行されます。このルーチンはカートリッジ・コードを使用可能にし、失効したと推測される索引のデータ・ブロック・アドレスを更新します。

UPDATE BLOCK REFERENCESの制限事項

この句は、ALTER INDEXの他の句と組み合せることはできません。

alter_index_partitioning

ALTER INDEX文のパーティション化句は、パーティション索引に対してのみ有効です。

ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

索引パーティションの変更の制限事項

索引パーティションの変更には、次の制限事項があります。

  • これらの句は、一時表の索引に対して指定できません。

  • ベース索引に対するいくつかの操作を1つのALTER INDEX文にまとめることはできますが(RENAMEおよびREBUILDは除く)、パーティション操作を、他のパーティション操作またはベース索引に対する操作と組み合せることはできません。

modify_index_default_attrs

パーティション索引のデフォルト属性に新しい値を指定します。

パーティションのデフォルト属性の変更の制限事項

ハッシュ・パーティション・グローバル索引またはハッシュ・パーティション表の索引に対して指定できる属性は、TABLESPACEのみです。

TABLESPACE

索引の新規パーティション、または索引パーティションのサブパーティションに対して、デフォルトの表領域を指定します。

logging_clause

パーティション化された索引または索引パーティションのデフォルト・ロギング属性を指定します。

この句の詳細は、logging_clause」を参照してください。

FOR PARTITION

FOR PARTITION句を使用すると、コンポジット・パーティション表にあるローカル索引のパーティションのサブパーティションに対して、デフォルト属性を指定できます。

FOR PARTITIONの制限事項

FOR PARTITIONは、リスト・パーティションには指定できません。

add_hash_index_partition

この句を使用すると、ハッシュ・パーティション・グローバル索引にパーティションを追加できます。Oracle Databaseは、ハッシュ・パーティションを追加し、ハッシュ・ファンクションによって索引の既存のハッシュ・パーティションから再ハッシュされた索引エントリをそのハッシュ・パーティションに移入します。パーティション名を省略すると、SYS_Pnの形式でパーティション名が割り当てられます。TABLESPACE句を省略すると、その索引に対して指定された表領域にパーティションが配置されます。索引の表領域が指定されていない場合、パーティションは、ユーザーのデフォルトの表領域(指定されている場合)またはシステムのデフォルトの表領域に配置されます。

modify_index_partition

modify_index_partition句を使用すると、索引パーティションpartitionまたはそのサブパーティションの実物理属性、ロギング属性または記憶特性を変更できます。ハッシュ・パーティション・グローバル索引の場合、この句に指定できる副次句はUNUSABLEのみです。

COALESCE

この句を指定すると、ブロックを再利用するために、索引パーティション・ブロックの内容を空きブロックにマージできます(可能な場合)。

CLEANUP

CLEANUPを指定すると、表のパーティション・メンテナンス操作で以前に削除または切り捨てられたレコードに対する孤立した索引エントリを削除できます。

孤立した索引エントリが索引パーティションに含まれているかどうかを判断するには、USER_DBA_ALL_PART_INDEXESデータ・ディクショナリ・ビューのORPHANED_ENTRIES列を問い合せます。詳細は、『Oracle Databaseリファレンス』を参照してください。

UPDATE BLOCK REFERENCES

UPDATE BLOCK REFERENCES句は、索引構成表の通常の索引に対してのみ有効です。この句を使用すると、2次索引パーティションに格納されている、失効したと推測されるすべてのデータ・ブロック・アドレスを更新することができます。

UPDATE BLOCK REFERENCESの制限事項

この句には、次の制限事項があります。

  • ハッシュ・パーティション表の索引に対して、physical_attributes_clauseを指定することはできません。

  • ALTER INDEXの他の句とともに、UPDATE BLOCK REFERENCESを指定することはできません。

ノート:

索引がコンポジット・パーティション表のローカル索引である場合、ここで指定した変更は、以前に索引のサブパーティションに対して指定した属性を上書きします。また、そのパーティションに対して今後作成されるサブパーティションの属性値のデフォルト値となります。サブパーティションの属性はそのままで、パーティションのデフォルトの属性を変更するには、ALTER TABLE ... MODIFY DEFAULT ATTRIBUTES FOR PARTITIONを使用します。

UNUSABLE句

索引パーティションに対するこの句の機能は、索引全体の場合と同じです。「USABLE | UNUSABLE」を参照してください。

index_compression

この句は、コンポジット・パーティション索引で有効です。この句を使用すると、パーティションおよびそのパーティションのすべてのサブパーティションの圧縮属性を変更できます。パーティション内の各索引サブパーティションの状態は自動的にUNUSABLEと設定されるため、これらのサブパーティションを再構築する必要があります。パーティションのprefix_compression句を指定する前に、接頭辞圧縮を索引に指定する必要があります。または、パーティションのadvanced_index_compression句を指定する前に、拡張索引圧縮を索引に指定する必要があります。この句は、パーティション・レベルでのみ指定できます。個々のサブパーティションの圧縮属性を変更することはできません。

非コンポジット索引パーティションにもこの句を指定できます。ただし、非コンポジット・パーティションには、再構築と圧縮属性の設定を1つのステップで行うrebuild_clauseを使用する方が効率的です。

rename_index_partition

rename_index_partition句を使用すると、索引パーティションまたはサブパーティションの名前をnew_nameに変更できます。

索引パーティションの名前変更の制限事項

索引パーティションの名前変更には、次の制限事項があります。

  • リスト・パーティションのサブパーティションは名前を変更できません。

  • ドメイン索引のパーティションの場合、indexIN_PROGRESSまたはFAILEDのマークを付けることはできません。また、パーティションにIN_PROGRESS、名前を変更するパーティションにFAILEDのマークを付けることはできません。

drop_index_partition

drop_index_partition句を使用すると、グローバル・パーティション索引からパーティションとその中のデータを削除できます。グローバル索引のパーティションを削除する場合、その索引の次のパーティションにUNUSABLEのマークが付けられます。グローバル索引の最上位のパーティションは削除できません。

split_index_partition

split_index_partition句を使用すると、レンジ・パーティション・グローバル索引のパーティションを2つのパーティションに分割し、新しいパーティションを索引に追加できます。この句は、ハッシュ・パーティション・グローバル索引に対しては無効です。かわりに、add_hash_index_partition句を使用してください。

UNUSABLEのマークが付いたパーティションを分割すると、2つのパーティションが生成されますが、その両方にUNUSABLEのマークが付けられます。このようなパーティションは、使用前に再構築する必要があります。

USABLEのマークが付いたパーティションを分割すると、索引データが移入された2つのパーティションが生成されます。新しいパーティションは、どちらもUSABLEのマークが付きます。

AT句

split_partition_1に新しい上限(境界は含まない)を指定します。value_listの値は、partition_name_oldの分割前のパーティション境界より小さく、その次の最小のパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値である必要があります。

INTO句

分割の結果、生成される2つのパーティションの名前と物理属性を任意に指定します。

coalesce_index_partition

この句は、ハッシュ・パーティション・グローバル索引に対してのみ有効です。索引パーティションの数が1つ減少します。結合するパーティションは、ハッシュ・ファンクションの要件に基づいて選択されます。この句を使用するのは、選択されたパーティションの索引エントリを残りのパーティションのいずれかに分散した後で、その選択されたパーティションを削除する場合です。

modify_index_subpartition

modify_index_subpartition句を使用すると、コンポジット・パーティション表にあるローカル索引のサブパーティションに対する領域のUNUSABLEのマーク付け、割当てまたは割当て解除が可能になります。このようなサブパーティションの他のすべての属性は、パーティション・レベルのデフォルトの属性から継承されます。

索引ブロックの逆順格納: 例

次の文は、索引ブロックのバイトが逆順に格納されるように、索引ord_customer_ix (「索引の作成: 例」で作成)を再構築します。

ALTER INDEX ord_customer_ix REBUILD REVERSE;

索引のパラレル再構築: 例

次の文は、パラレル実行プロセスを使用して、既存の索引のスキャンおよび新しい索引の構築を行い、既存の索引から索引を再構築します。

ALTER INDEX ord_customer_ix REBUILD PARALLEL;

索引の実属性の変更: 例

次の文は、同じ索引に将来追加されるデータ・ブロックが、5つの初期トランザクション・エントリを使用するように、索引oe.cust_lname_ixを変更します。

ALTER INDEX oe.cust_lname_ix  
    INITRANS 5;

索引oe.cust_lname_ixがパーティション化されている場合、この文は将来追加される索引のパーティションのデフォルト属性も変更します。将来追加されるパーティションでは、5つの初期トランザクション・エントリと100KBの増分エクステントが使用されます。

パラレル問合せの有効化: 例

次の文は、索引upper_ix (「ファンクション索引の作成: 例」で作成)に対するスキャンがパラレル化されるように、索引のパラレル属性を設定します。

ALTER INDEX upper_ix PARALLEL;

索引の名前変更: 例

次の文は、索引名を変更します。

ALTER INDEX upper_ix RENAME TO upper_name_ix;

索引へのUnusableのマーク付け: 例

次の文は、cost_ix索引(「レンジ・パーティション・グローバル索引の作成: 例」で作成)を使用します。この索引のパーティションp1は、「索引パーティションの削除: 例」で削除されています。最初の文は、索引パーティションp2UNUSABLEのマークを付けます。

ALTER INDEX cost_ix
   MODIFY PARTITION p2 UNUSABLE;

次の文は、索引cost_ix全体にUNUSABLEのマークを付けます。

ALTER INDEX cost_ix UNUSABLE;

使用禁止の索引パーティションの再構築: 例

次の文は、cost_ix索引のパーティションp2およびp3を再構築し、索引を再度使用可能にします。パーティションp3の再構築は記録されません。

ALTER INDEX cost_ix 
   REBUILD PARTITION p2;
ALTER INDEX cost_ix
   REBUILD PARTITION p3 NOLOGGING;

MAXEXTENTSの変更: 例

次の文は、パーティションp3のエクステントの最大数を変更し、ロギング属性を変更します。

/* This example will fail if the tablespace in which partition p3
   resides is locally managed.
*/
ALTER INDEX cost_ix MODIFY PARTITION p3
   STORAGE(MAXEXTENTS 30) LOGGING;

索引パーティションの名前変更: 例

次の文は、cost_ix索引(「レンジ・パーティション・グローバル索引の作成: 例」で作成)の索引パーティションの名前を変更します。

ALTER INDEX cost_ix
   RENAME PARTITION p3 TO p3_Q3;

パーティションの分割: 例

次の文は、索引cost_ixのパーティションp2 (「レンジ・パーティション・グローバル索引の作成: 例」で作成)をp2ap2bに分割します。

ALTER INDEX cost_ix
   SPLIT PARTITION p2 AT (1500) 
   INTO ( PARTITION p2a TABLESPACE tbs_01 LOGGING,
          PARTITION p2b TABLESPACE tbs_02);

索引パーティションの削除: 例

次の文は、cost_ix索引から索引パーティションp1を削除します。

ALTER INDEX cost_ix
   DROP PARTITION p1;

デフォルト属性の変更: 例

次の文は、ローカル・パーティション索引prod_idx (「ハッシュ・パーティション表の索引の作成: 例」で作成)のデフォルトの属性を変更します。将来追加されるパーティションでは、5つの初期トランザクション・エントリが使用されます。

ALTER INDEX prod_idx
      MODIFY DEFAULT ATTRIBUTES INITRANS 5;