Печать
Категория: Мой блог
Просмотров: 53094

 

При выполнении компиляции инвалидных объектов с помощью пакета utl_recomp возникает ошибка ORA-00955:

 SQL> begin 2> sys.utl_recomp.recomp_serial; 3> end; begin * Ошибка в строке 1: ORA-00955: name is already used by an existing object ORA-06512: at "SYS.UTL_RECOMP", line 662 ORA-06512: at "SYS.UTL_RECOMP", line 715 ORA-06512: at line 2 

Проблема заключается в том, что пакет, при выполнении, генерирует индексы в схеме sys:

 CREATE INDEX utl_recomp_comp_idx1 ON utl_recomp_compiled(obj#) NOPARALLEL 

Если выполнение пакета завершилось неудачно, то индексы остаются, и при последующем запуске генерируется ошибка ORA-00955 (имя используется в существующем объекте).

Удаляем индекс:

 SQL> DROP INDEX sys.utl_recomp_comp_idx1 Индекс удален 

И пакет выполняется без ошибок:

 SQL> begin 2> sys.utl_recomp.recomp_serial; 3> end; 4> PL/SQL procedure successfully completed 

p.s

Имя индекса может отличаться от приведённого, но все они начинаются с utl_recomp.

Для информации Bug:9881143