miércoles, abril 13, 2011

Objetos inválidos en Oracle

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.

No hay comentarios: