Я думаю, что опция «SYNC EVERY», как описано в предыдущем ответе, доступна только в Oracle 10g или новее. Если вы используете более старую версию Oracle, вам придется периодически запускать операцию синхронизации. Например, вы можете создать следующую хранимую процедуру:
CREATE OR REPLACE
Procedure sync_ctx_indexes
IS
CURSOR sql1 is select distinct(pnd_index_owner||'.'||pnd_index_name) as index_name from ctx_pending;
BEGIN
FOR rec1 IN sql1 LOOP
ctx_ddl.sync_index(rec1.index_name);
END LOOP;
END;
, а затем запланировать его запуск через DBMS_JOB:
DBMS_JOB.SUBMIT(job_id, 'sync_ctx_indexes;', SYSDATE, 'SYSDATE + 1/720');
Что касается оптимизации индекса, можно использовать следующую команду (также можно запланировать с помощью DBMS_JOB или cron):
alter index my_index rebuild online parameters('optimize full maxtime 60');
Существует также пакет CTX_ * с аналогичной функцией.