5.4 索引の再作成

この項では、索引を再作成する手順を説明します。再作成プロセス中は、索引を正常に問い合せることができます。

5.4.1 グローバル索引の再作成

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

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

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

  • 再作成操作の過程で索引に対して発行された最適化コマンドは、なにも実行されずにエラーなしで即時に戻ります。

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

ノート:

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

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

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

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

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

関連項目:

  • RECREATE_INDEX_ONLINEプロシージャについてさらに学習するには、『Oracle Textリファレンス』を参照してください。

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

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

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

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

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

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

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

  • SWAPを指定した場合、パーティションに対する挿入、更新および削除操作ならびに同期化は、スワッピング・プロセス中にブロックされます。

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

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

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

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

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

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

関連項目:

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