Oracle: Invalid Objects

Oracle: Invalid Objects

Após alguma rotina de atualização do ERP ou mesmo migração via expdp/impdp, alguns objetos do banco de dados ficam inválidos, por N motivos, falta de permissão, relacionamento, etc.

Segue abaixo duas querys que utilizo, uma para identificar a quantidade de objetos inválidos por schema, e a outra para recompilar.

-- Identificando objetos invalidados 
    COLUMN object_name FORMAT A30;
    COLUMN owner FORMAT A20;
    SELECT owner,  
           COUNT(status) INVALID_OBJECTS
    FROM   dba_objects
    WHERE  status = 'INVALID'
    GROUP BY owner
    ORDER BY 2;

-- Criando script para recompilar os Objetos 
    spool rebuild_objects.sql 
    COLUMN owner FORMAT A20;
    SELECT 'EXEC DBMS_UTILITY.compile_schema(schema => ''' || owner || ''');'
    FROM   dba_objects
    WHERE  status = 'INVALID'
    GROUP BY owner
    ORDER BY 1;    
    spool off; 
    @rebuild_objects.sql

Abs!