ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
12cリリース1 (12.1)
B71317-04
  目次へ移動
目次
索引へ移動
索引

前
次
 

索引の再作成

この項では、索引設定の変更を可能にする、索引の再作成に使用できるプロシージャについて説明します。再作成のプロセス中、通常、索引を問い合せることができます。

グローバル索引の再作成

Oracle Textでは、RECREATE_INDEX_ONLINEを提供して新規プリファレンスによるCONTEXT索引を再作成できる一方、再作成処理中の元表DMLおよび問合せ機能が保持されています。RECREATE_INDEX_ONLINEを単一手順のプロシージャで使用して、グローバル索引用のCONTEXT索引をオンラインで作成できます。既存の索引を残したまま新規索引が作成されるため、この操作には既存の索引とほぼ同じサイズの記憶域が必要です。また、RECREATE_INDEX_ONLINE操作はオンラインで実行されるため、操作中に元表でDMLを発行できます。再作成中に発行されるすべてのDMLは、オンラインの保留中のキューに記録されます。

  • 索引の再作成操作の完了後、再作成プロセス中のDMLによる新しい情報がすぐに反映されない場合があります。オンラインでの索引の作成の場合と同様に、索引の再作成操作の完了後は、索引を完全に最新にするために、それを同期化する必要があります。

  • 再作成中に索引に対して発行される同期化は、既存の古いデータに対して処理されます。この期間中、問合せがエラーを戻す場合、同期化はブロックされます。

  • 再作成中に索引に対して発行される最適化コマンドは、エラーも処理もなく、すぐに戻ります。

  • RECREATE_INDEX_ONLINEの間は、ほとんど常に、索引を問い合せることができます。問合せは、最後のスワップが終わるまで、既存の索引およびポリシーに基づいて結果を戻します。また、DML文を発行してそれを同期化した場合は、既存の索引の問合せ時に新しい行を表示できます。

関連項目:

RECREATE_INDEX_ONLINEプロシージャの詳細は、『Oracle Textリファレンス』を参照してください。

注意:

RECREATE_INDEX_ONLINEでは、トランザクション・ベースの問合せはサポートされていません。

ローカル・パーティション索引の再作成

索引がローカルにパーティション化されている場合は、1回の手順で索引を再作成できません。最初にシャドウ・ポリシーを作成してから、すべてのパーティションに対してRECREATE_INDEX_ONLINEプロシージャを実行する必要があります。パーティションの索引の再作成で索引パーティション・データおよび索引パーティション・メタデータをスワップするかどうかを示すSWAPまたはNOSWAPを指定できます。

パラメータ文字列でNOPOPULATEを指定した場合、このプロシージャを使用して、各パーティションのメタデータ(記憶域プリファレンスなど)を更新できます。これは、時間が限定された同期化によってシャドウ索引を追加的に構築する場合に便利です。NOPOPULATEが指定されている場合は、NOSWAPが警告なしで強制されます。

  • すべてのパーティションでNOSWAPが使用されている場合、既存の索引とほぼ同じサイズの記憶域が必要です。索引パーティションの再作成中にスワッピングは実行されないため、パーティションに対する問合せは通常処理されます。複数のパーティションにわたる問合せは、スワッピングの段階に到達するまで、パーティションをまたがって一貫した結果を戻します。

  • SWAPを指定してパーティションを再構築する場合、その操作に必要な記憶域は、既存の索引パーティションとほぼ同じサイズです。索引パーティション・データおよび索引パーティション・メタデータは再作成後にスワッピングされるため、複数のパーティションにわたる問合せはパーティション間で一貫した結果を戻しませんが、各索引パーティションに関しては常に正しい結果となります。

  • SWAPが指定されている場合、パーティションに対するDMLおよび同期化は、スワッピング・プロセス中にブロックされます。

関連項目:

RECREATE_INDEX_ONLINEの詳細は、『Oracle Textリファレンス』を参照してください。

時間制限付き同期化によるグローバル索引の再作成

索引の再作成を制御して、営業時間外にSYNC_INDEXの時間制限を設定し、索引を追加的に再作成できます。CREATE_SHADOW_INDEXプロシージャをPOPULATE_PENDINGおよびmaxtimeとともに使用します。

関連項目:

CREATE_SHADOW_INDEXの例については、『Oracle Textリファレンス』を参照してください。

スケジュールされたスワッピングによるグローバル索引の再作成

問合せの失敗およびDMLブロックを許容できる場合は、CTX_DDL.EXCHANGE_SHADOW_INDEXを使用して、営業時間外に索引の再作成を実行できます。

関連項目:

CTX_DDL.EXCHANGE_SHADOW_INDEXの例については、『Oracle Textリファレンス』を参照してください。

同時スワッピングによるローカル索引の再作成

ローカル・パーティション索引をオンラインで再作成して、プリファレンスを作成または変更できます。索引およびパーティションのメタデータのスワッピングは、この処理の最後に実行されます。複数のパーティションにわたる問合せは、最後にEXCHANGE_SHADOW_INDEXが実行されているときを除く再作成の処理中、パーティションをまたがって一貫した結果を戻します。

同時スワッピングによるローカル索引再作成のスケジューリング

CTX.DDLパッケージのRECREATE_INDEX_ONLINEにより、ローカル・パーティション索引を追加的に再作成できます。ここで、パーティションは最後にすべてスワッピングされます。

関連項目:

RECREATE_INDEX_ONLINEを使用したこの処理の詳細および例は、『Oracle Textリファレンス』を参照してください。

パーティションごとのスワッピングによるローカル索引の再作成

同時にすべてのパーティションをスワッピングするかわりに、各パーティションをその完了時にスワッピングすることによって、新しいプリファレンスを使用して索引をオンラインで再作成できます。すべてのパーティションにわたる問合せは、その処理中に一貫性のない結果を戻す場合があります。このプロシージャでは、CREATE_SHADOW_INDEXRECREATE_INDEX_ONLINEとともに使用されます。

関連項目:

RECREATE_INDEX_ONLINEを使用した索引パーティションのスワッピングの例は、『Oracle Textリファレンス』を参照してください。