Oracle Invalide Objekte finden und compilieren.

Bei diversen Änderungen von Tabellendefinitionen, Funktionen etc. werden teilweise abhängige Objekte weitere Funktionen, Views usw. invalidiert.
Die Frage ist dann immer:  Wie überwacht man dieses und wie automatisiert man es, dass die Objekte wieder valide werden?

Ein simples Stück Code löst dieses Problem.

set heading off;
set feedback off;
set echo off;
Set lines 999;
spool compile_invalid.sql
select ‚ALTER ‚ || OBJECT_TYPE || ‚ ‚ || OWNER || ‚.‘ || OBJECT_NAME || ‚ COMPILE;‘

  from dba_objects

where status = ‚INVALID‘

   and object_type in(‚PACKAGE‘,’FUNCTION‘,’PROCEDURE‘,MATERIALIZED VIEW‘,’VIEW‘);

spool off;
set heading on;
set feedback on;
set echo on;
@compile_invalid.sql

Da es vorkommen kann, dass die Reihenfolge der Abhängigkeiten nicht der aus dem Script Ergebnis entspricht sollte man das Script ggf. mehrfach ausführen. Sonst kann es passieren, dass Abhängigkeiten erst später valide werden, als diese gebraucht wurden. Somit bleiben dann Objekte u.U. wegen nicht erfüllter Abhängigkeiten im ersten Lauf invalid.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.