Должны ли мы заново создать индекс типа "ctxsys". "Context", когда процедура, использованная для создания индекса, была изменена? - PullRequest
0 голосов
/ 06 сентября 2018

У нас есть следующий индекс для таблицы:

CREATE INDEX "SCHEMA"."FINDEINTRAGURKUNDLTEIL" ON "SCHEMA"."URKUNDLTEIL" ("DATEN") 
  INDEXTYPE IS "CTXSYS"."CONTEXT"
  PARAMETERS ('datastore FINDEINTR_URKUNLD_PREF
               filter FINDEINTR_CHARSET_FILTER
               lexer FINDEINTR_LEXER
               section group findEintr_sectionGroup  
               nontransactional
               SYNC (ON COMMIT)') 
  PARALLEL 16 ;

Атрибут процедуры предпочтения CTX был установлен следующим образом:

ctx_ddl.set_attribute ( 
    PREFERENCE_NAME => 'FINDEINTR_URKUNLD_PREF',
    ATTRIBUTE_NAME=> 'PROCEDURE',
    ATTRIBUTE_VALUE => 'FINDEINTRAG.findDatenUrkundlteil')

Текстовый поиск работает нормально, индекс используется правильно.

Из-за запроса на изменение мы должны изменить код FINDEINTRAG.findDatenUrkundlteil. Нет сомнений в том, что мы должны перекомпилировать модифицированную процедуру:

create or replace PACKAGE BODY "FINDEINTRAG" AS 
     procedure findDatenUrkundlteil () AS 
     BEGIN
         /*code comes here*/
     END findDatenUrkundlteil;
END FINDEINTRAG;

Мой вопрос: мы должны удалить индекс "SCHEMA"."FINDEINTRAGURKUNDLTEIL" и создать его снова? Или же после компиляции процедуры будет ли индекс для новых записей в таблице генерироваться с использованием новой процедуры?

С функциональной точки зрения это было бы хорошо, а именно, запрос на изменение не влияет на старые данные в базе данных и их индекс, созданный старой процедурой.

1 Ответ

0 голосов
/ 08 сентября 2018

Я думаю, что вы можете сойти с ALTER INDEX <indexname> REBUILD вместо того, чтобы бросать и воссоздавать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...