索引を同期化すると、元表に対する保留中のすべての更新および挿入が処理されます。同期化は、PL/SQLでCTX_DDL.SYNC_INDEXプロシージャを使用して実行します。次の項では、索引の同期化で継続期間およびロック動作を制御する方法を説明します。
CTX_DDL.SYNC_INDEX
SYNC_INDEXによる索引の同期化
SYNC_INDEXのmaxtimeパラメータ
SYNC_INDEXのロック・パラメータ
次の例では、2MBのメモリーを使用して索引を同期化します。
begin
ctx_ddl.sync_index('myindex', '2M');
end;
関連項目:
CTX_DDL.SYNC_INDEX文の構文の詳細は、『Oracle Textリファレンス』を参照してください。
sync_indexプロシージャには、optimize_indexのように、操作に対し分単位の提示された時間制限を指定するmaxtimeパラメータが含まれます。sync_indexは、指定の時間制限内に、キュー内のできるかぎり多くのドキュメントを処理します。
sync_index
optimize_index
maxtime
maxtimeがNULLの場合は、CTX_DDL.MAXTIME_UNLIMITEDの場合と同じです。
CTX_DDL.MAXTIME_UNLIMITED
時間制限は、概算です。実際にかかる時間が指定した時間より短いかまたは長い場合があります。
非推奨となっているALTER INDEX... syncコマンドには、変更はありません。
ALTER
INDEX
sync
sync_indexが索引名なしに起動された場合、maxtimeパラメータは無視されます。
maxtimeパラメータは、自動同期化(sync on commitやsync everyなど)には反映されません。
on
commit
every
sync_indexのロック・パラメータにより、索引に対してすでに他の同期化が実行中の場合に同期化がどのような処理をするかを構成できます。
sync_indexが索引名なしに起動された場合、ロック・パラメータは無視されます。
ロック・パラメータは、自動同期化(sync on commitまたはsync everyなど)には反映されません。
ロック・モードがLOCK_WAITの場合、ロックが取得できない場合には永久に待機され、maxtimeの設定は無視されます。
LOCK_WAIT
使用できるオプションは次のとおりです。
CTX_DDL.LOCK_WAIT
別の同期化が実行されている場合、実行中の同期化が完了するまで待機してから新規の同期化を開始します。
CTX_DDL.LOCK_NOWAIT
別の同期化が実行されている場合、すぐにエラーなしで戻ります。
CTX_DDL.LOCK_NOWAIT_ERROR
別の同期化が実行されている場合、すぐにエラーが発生します(DRG-51313: DMLまたは最適化ロックの待機中にタイムアウトになりました)。