Una base de datos con un tamaño importante acaba lleno de objetos inválidos.
Son sinónimos huérfanos, procedimientos que no llegaron a compilarse, etc. etc.
Para sacar una lista de objetos inválidos podemos hacer:
select OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS from dba_objects
where OWNER not in (‘SYS’,’SYSTEM’) and status = ‘INVALID’
order by OWNER,OBJECT_TYPE,OBJECT_NAME;
Podemos intentar la compilación, a ver que tal va:
Esta select prepara una sentencia por cada objeto inválido:
select ‘alter ‘||object_type||’ ‘||owner||’.’||object_name||’ compile;’
from dba_objects where status = ‘INVALID’
order by owner, object_name;
Saludos.