ALTER INDEX
前提条件
索引が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER
ANY
INDEX
システム権限が必要です。
MONITORING
USAGE
句を実行する場合は、索引は自分のスキーマ内に存在する必要があります。
ドメイン索引を変更する場合は、索引の索引タイプに対してEXECUTE
オブジェクト権限が必要です。
オブジェクト権限は、個々の索引パーティションまたはサブパーティションではなく、親索引に付与されている必要があります。
索引パーティションの変更、再作成または分割、索引サブパーティションの変更または再作成を行う場合は、表領域割当て制限が必要です。
構文
alter_index::=
(deallocate_unused_clause::=、allocate_extent_clause::=、shrink_clause::=、parallel_clause::=、physical_attributes_clause::=、logging_clause::=、partial_index_clause::=、rebuild_clause::=、alter_index_partitioning::=)
(ODCI_parameters
については、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。)
shrink_clause::=
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開発者ガイド』を参照してください。
prefix_compression::=
advanced_index_compression::=
alter_index_partitioning::=
(modify_index_default_attrs::=、add_hash_index_partition::=、modify_index_partition::=、rename_index_partition::=、drop_index_partition::=、split_index_partition::=、coalesce_index_partition::=、modify_index_subpartition::=)
add_hash_index_partition::=
modify_index_partition::=
(deallocate_unused_clause::=、allocate_extent_clause::=、physical_attributes_clause::=、logging_clause::=、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::=)
modify_index_subpartition::=
セマンティクス
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
を使用すると、非パーティション索引、パーティション索引のすべてのパーティションおよびサブパーティション、指定されたパーティション、または指定されたパーティションのすべてのサブパーティションに対するパラメータの値を変更できます。
関連項目:
-
この句のパラメータの詳細は、「CREATE TABLE」を参照してください。
索引の物理属性の制限事項
索引の物理属性には、次の制限事項があります。
-
この句は、一時表の索引に対して指定できません。
-
索引の変更中は、
PCTUSED
パラメータを指定できません。 -
PCTFREE
パラメータは、rebuild_clause
、modify_index_default_attrs
句またはsplit_index_partition
句の一部としてのみ指定できます。
storage_clause
storage_clause
を使用すると、非パーティション索引、索引パーティション、またはパーティション索引のすべてのパーティションの記憶域パラメータ、あるいはパーティション索引の記憶域パラメータのデフォルト値を変更できます。この句の詳細は、「storage_clause」を参照してください。
logging_clause
logging_clause
を使用すると、索引のロギング属性を変更できます。REBUILD
句も指定すると、この新しい設定は再構築操作に影響します。REBUILD
句でロギングに異なる値を指定した場合、索引および再構築操作のロギング属性として指定された最後のロギング値が使用されます。
索引セグメントには、実表の属性と異なるロギング属性、および同じ実表の他の索引セグメントと異なるロギング属性を指定できます。
索引のログの制限事項
この句は、一時表の索引に対して指定できません。
関連項目:
-
この句の詳細は、「logging_clause」を参照してください。
-
パラレルDMLの詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
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
INDEX
のAS
副問合せ句を使用してのみ指定できます。
rebuild_clause
rebuild_clause
を使用すると、既存の索引、あるいはパーティションまたはサブパーティションのいずれかを再構築できます。索引にUNUSABLE
のマークが付いている場合、正常に再構築するとUSABLE
になります。ファンクション索引も使用可能にします。索引の基になるファンクションが存在しない場合、再構築文は正常に実行されません。
ノート:
索引構成表の2次索引を再構築する場合、Oracle Databaseは、索引が作成されたときの論理ROWIDに含まれる主キー列を保持します。したがって、COMPATIBLE
初期化パラメータが10.0.0未満に設定された状態で索引が作成された場合、再構築された索引には、索引キーと、索引キーには含まれない表の主キー列が含まれます。COMPATIBLE
初期化パラメータが10.0.0以上に設定された状態で索引が作成された場合、再構築された索引には、索引キーと、索引キーに含まれる主キー列を含む、表のすべての主キー列が含まれます。
索引の再構築の制限事項
索引の再構築には、次の制限事項があります。
-
一時表の索引は、再構築できません。
-
INVALID
のマークが付いているビットマップ索引は再構築できません。制約を削除してからそれを再作成する必要があります。 -
パーティション索引全体は、再構築できません。
PARTITION
句で説明するとおり、各パーティションまたはサブパーティションを再構築する必要があります。 -
同じ文で
deallocate_unused_clause
とrebuild_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およびパーティショニング・ガイド』を参照してください。
索引サブパーティションの変更の制限事項
パラメータTABLESPACE
、ONLINE
および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
に変更されます。
関連項目:
index_compression
index_compression
句を使用して、索引の索引圧縮を有効化または無効化します。prefix_compression
句を指定して、索引の接頭辞圧縮を有効化または無効化します。advanced_index_compression
句を指定して、索引の拡張索引圧縮を有効化または無効化します。
index_compression
句は、CREATE
INDEX
およびALTER
INDEX
に対して同じセマンティクスを持ちます。これらの句の詳細は、CREATE
INDEX
のindex_compressionを参照してください。
ONLINE句
ONLINE
を指定すると、表またはパーティションのDML操作を索引の再構築中に可能にするかどうかを指定できます。
オンライン索引の制限事項
オンライン索引には、次の制限事項があります。
-
オンライン索引の作成中は、パラレルDMLはサポートされません。
ONLINE
を指定し、続いてパラレルDML文を発行すると、Oracle Databaseはエラーを戻します。 -
ビットマップ結合索引またはクラスタ索引には、
ONLINE
を指定できません。 -
索引構成表の一意でない2次索引の場合、索引構成表内の索引キー列の数と論理ROWIDの主キー列の数の合計は、32以下にする必要があります。論理ROWIDは、索引キーに含まれる列を除外します。
PARAMETERS句
この句は、トップレベルのALTER
INDEX
文およびrebuild_clause
のドメイン索引に対してのみ有効です。この句は、未解析のまま適切なODCI索引タイプ・ルーチンに渡されたパラメータ文字列を指定します。
パラメータ文字列の最大長は1,000文字です。
索引全体を変更または再構築する場合、文字列は索引レベルのパラメータを参照する必要があります。索引のパーティションを再構築する場合、文字列はパーティション・レベルのパラメータを参照する必要があります。
index
にUNUSABLE
のマークが付いている場合、パラメータを変更するのみではUSABLE
にはなりません。UNUSABLE
のマークが付いた索引を使用可能にするには、その索引を再構築する必要があります。
Oracle Textがインストール済の場合、Oracle Text固有のパラメータを使用するOracle Textのドメイン索引を再構築することができます。パラメータの詳細は、『Oracle Textリファレンス』を参照してください。
PARAMETERS句の制限事項
index
にIN_PROGRESS
およびFAILED
のマークが付いておらず、索引パーティションにIN_PROGRESS
のマークが付いておらず、変更するパーティションにFAILED
のマークが付いていない場合にのみ、索引パーティションを変更できます。
関連項目:
-
ドメイン索引の索引タイプ・ルーチンの詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。
-
ドメイン索引の詳細は、「CREATE INDEX」を参照してください。
XMLIndex_parameters_clause
この句は、XMLIndex索引に対してのみ有効です。この句は、XMLIndex実装を定義するパラメータ文字列を指定します。
パラメータ文字列の最大長は1,000文字です。
索引全体を変更または再構築する場合、文字列は索引レベルのパラメータを参照する必要があります。索引のパーティションを再構築する場合、文字列はパーティション・レベルのパラメータを参照する必要があります。
index
にUNUSABLE
のマークが付いている場合、パラメータを変更するのみではUSABLE
にはなりません。UNUSABLE
のマークが付いた索引を使用可能にするには、その索引を再構築する必要があります。
関連項目:
XMLIndex_parameters_clause
の構文およびセマンティクスを含むXMLIndex
の詳細は、『Oracle XML DB開発者ガイド』を参照してください
XMLIndex_parameters_clauseの制限事項
index
にIN_PROGRESS
およびFAILED
のマークが付いておらず、索引パーティションにIN_PROGRESS
のマークが付いておらず、変更するパーティションにFAILED
のマークが付いていない場合にのみ、索引パーティションを変更できます。
{ DEFERRED | IMMEDIATE } INVALIDATION
この句を使用すると、索引の再構築中または索引にUNUSABLE
のマークを付けているときにデータベースで依存カーソルがいつ無効化されるかを制御できます。
-
DEFERRED
INVALIDATION
を指定した場合、データベースでは可能な場合、依存カーソルの無効化を回避または遅延します。 -
IMMEDIATE
INVALIDATION
を指定した場合、データベースでは、Oracle Database 12cリリース1 (12.1)以前のリリースでの動作と同様に、依存カーソルを即時に無効にします。これはデフォルトです。
この句を省略した場合、いつカーソルが無効になるかは、CURSOR_INVALIDATION
初期化パラメータの値によって決定されます。
関連項目:
-
カーソルの無効化の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。
-
CURSOR_INVALIDATION
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
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
TABLE
のCOALESCE
句を使用します。
関連項目:
-
領域管理および索引の結合の詳細は、『Oracle Database管理者ガイド』を参照してください。
-
索引構成表の領域の結合の詳細は、「COALESCE句」を参照してください。
-
索引セグメントを縮小化する他の方法については、「shrink_clause」を参照してください。
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_P
n
の形式でパーティション名が割り当てられます。TABLESPACE
句を省略すると、その索引に対して指定された表領域にパーティションが配置されます。索引の表領域が指定されていない場合、パーティションは、ユーザーのデフォルトの表領域(指定されている場合)またはシステムのデフォルトの表領域に配置されます。
modify_index_partition
modify_index_partition
句を使用すると、索引パーティションpartition
またはそのサブパーティションの実物理属性、ロギング属性または記憶特性を変更できます。ハッシュ・パーティション・グローバル索引の場合、この句に指定できる副次句はUNUSABLE
のみです。
この句を指定すると、ブロックを再利用するために、索引パーティション・ブロックの内容を空きブロックにマージできます(可能な場合)。
CLEANUP
CLEANUP
を指定すると、表のパーティション・メンテナンス操作で以前に削除または切り捨てられたレコードに対する孤立した索引エントリを削除できます。
孤立した索引エントリが索引パーティションに含まれているかどうかを判断するには、USER_
、DBA_
、ALL_PART_INDEXES
データ・ディクショナリ・ビューのORPHANED_ENTRIES
列を問い合せます。詳細は、『Oracle Databaseリファレンス』を参照してください。
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
に変更できます。
索引パーティションの名前変更の制限事項
索引パーティションの名前変更には、次の制限事項があります。
-
リスト・パーティションのサブパーティションは名前を変更できません。
-
ドメイン索引のパーティションの場合、
index
にIN_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
は、「索引パーティションの削除: 例」で削除されています。最初の文は、索引パーティションp2
にUNUSABLE
のマークを付けます。
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
(「レンジ・パーティション・グローバル索引の作成: 例」で作成)をp2a
とp2b
に分割します。
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;