[ОТВЕТИТЬ]
Опции темы
31.10.2013 13:06  
leonid
Вопрос праздный, потому в курилке.
Была скомпилирована процедура. Потом что-то в связанном объекте поправили. Процедура стала инвалидной. Но ведь продолжает работать?!
Везде пишут, как перекомпилировать. А зачем - не пишут)
 
31.10.2013 13:22  
OlegON
ты бумажки дома на пол бросаешь? а зачем в мусор? ходить же не мешает... |-)
если процедуру явно не скомпилировать, то, как минимум, она будет неявно компилироваться каждый раз во время выполнения, что сказывается хотя бы и на производительности, не говоря уж о том, что появление незапланированных инвалидов в куче других просто брошенных пройдет незамеченным...
 
31.10.2013 15:56  
leonid
При вызове процедура скомпилировалась сама!

Код:
SQL> 
SQL> drop table t1;

Таблица удалена.

SQL> 
SQL> create table t1
  2  (
  3   num number(10),
  4   text varchar2(100)
  5  );

Таблица создана.

SQL> 
SQL> create or replace procedure myproc is begin insert into t1 values('1','xxx');  commit;  end myproc;
  2  /

Процедура создана.

SQL> 
SQL> select a.object_name,  status from all_objects a where object_name = 'MYPROC';

OBJECT_NAME                    STATUS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
------------------------------ -------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
MYPROC                         VALID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

1 строка выбрана.

SQL> 
SQL> drop table t1;

Таблица удалена.

SQL> 
SQL> create table t1
  2  (
  3   num number(10),
  4   text varchar2(100)
  5  );

Таблица создана.

SQL> 
SQL> select a.object_name,  status from all_objects a where object_name = 'MYPROC';

OBJECT_NAME                    STATUS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
------------------------------ -------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
MYPROC                         INVALID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

1 строка выбрана.

SQL> 
SQL> exec myproc;

Процедура PL/SQL успешно завершена.

SQL> 
SQL> select a.object_name,  status from all_objects a where object_name = 'MYPROC';

OBJECT_NAME                    STATUS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
------------------------------ -------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
MYPROC                         VALID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

1 строка выбрана.

SQL> 
SQL> spool off;
 
31.10.2013 16:06  
OlegON
Если честно, как было в голове про явную и неявную компиляцию, так и не заморачивался. Т.е. инвалиды должны быть скомпилированы и точка :)
Если очень интересно продолжить исследования, то предлагаю озвучить версию и создать цепочку из зависимых объектов, а потом обратиться к верхнему, т.е. от которого будет зависеть инвалид, от которого в свою очередь будет зависеть еще один.
 
31.10.2013 16:11  
leonid
(версия оракла 9.2.0.8 под виндой)
цепочку создавать лень)
но догадываюсь, что объекты сами не всегда компилируются
 
31.10.2013 16:13  
OlegON
вот чем держать в голове кучу условий, лучше принять за аксиому, что инвалиды в БД - зло :)
 
 
Опции темы



Часовой пояс GMT +3, время: 03:15.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.