Ogni tanto capita che in seguito ad operazioni di modifica di programmi Oracle, alcuni oggetti da questi dipendenti risultino invalidati. Di solito, invocando questi oggetti con un client risulta in un errore a runtime.
L’istruzione che permette di trovare lo stato degli oggetti è il seguente e deve essere lanciato da un utente con privilegi di DBA:
select comp_id, comp_name, version, status, namespace, schema from dba_registry;
Uno script che individua gli oggetti (packages PL/SQL, procedure, funzioni e corpi di package) è invece il seguente
invalid.sql
Set heading off;
set feedback off;
set echo off;
Set lines 999;
Spool run_invalid.sql
select
'ALTER ' || OBJECT_TYPE || ' ' ||
OWNER || '.' || OBJECT_NAME || ' COMPILE;'
from
dba_objects
where
status = 'INVALID'
and
object_type in ('PACKAGE','FUNCTION','PROCEDURE');
spool off;
set heading on;
set feedback on;
set echo on;
@run_invalid.sql
Sommario

Commenti recenti