JAK ZNALEŹĆ NIE SKOMPILOWANE OBIEKTY?

Często zdarza się, że po jakiejś aktualizacji mamy nie skompilowane jakieś obiekty. Możemy oczywiście kompilować je ręcznie każdy z osobna. Co zrobić jednak, gdy obiektów tych jest dużo, gdzie znaleźć informacje o błędnej kompilacji.
Wszystkie potrzebne informacje znajdują się  np. w tablicy

DBA_OBJECTS.

Omówię to na przykładzie pakietów.

Najpierw wyciągamy listę pakietów nie skompilowanych:

select owner, object_name from dba_objects
where object_type = 'PACKAGE BODY' and status = 'INVALID'

Dla każdego zwróconego rekordu wykonujemy
alter package owner.object_name  compile body
gdzie zamiast owner  i object_name podajemy wartość z odpowiedniej kolumny owner lub object_name z zapytania wyżej.
Możemy również rozszerzyć pierwsze zapytanie za pomocą złączeń string-ów, tak by oprócz wartości owner i object_name zwróciło potrzebne nam frazy, zapytanie mogłoby więc wyglądać następująco:
      select 'alter package ' || owner || '.' || object_name || ' compile body;'
        from dba_objects where object_type = 'PACKAGE BODY' and status = 'INVALID'

Zwrócony wynik powinniśmy wkleić do konsoli I wykonać.

Brak komentarzy:

Prześlij komentarz