COMPILAR OBJETOS INVÁLIDOS – Oracle
Olá,
Neste artigo vamos analisar, aprender, um pouco de como identificar objetos inválidos no banco de dados Oracle.
1º Vamos setar a variavel, página para execução do comando SELECT:
set pagesize 0
2º Vamos criar um arquivo para salvar a saída do comando SELECT, vamos chamar o arquivo de compile_all.sql:
spool /compile_all.sql
3º Copie o comando abaixo para seu SQL PLUS e execute o mesmo:
select 'alter '||decode( object_type , 'PACKAGE BODY' ,'PACKAGE' , OBJECT_TYPE) ||' '||object_name||
decode( object_type , 'PACKAGE BODY' ,' compile body;' , ' compile;')
from dba_objects
where status='INVALID' and owner in ( select user from dual)
order by object_type;
OBS: Veja o código acima e observe que estou fazendo uma concatenação do comando ALTER no comando SELECT, isto se faz necessário para podermos executar de uma única vez, todos os objetos invélidos.
— A linha de comando abaixo informa que estamos finalizando, fechando, o arquivo que criamos no início deste script.
spool off
— Na linha abaixo, especifica que o arquivo que criamos, chamado de compile_all.sql, está sendo chamado e será executado, lembre que neste momento o script estará executando todos os arquivos inválidos do banco de dados.
@/compile_all
prefiro utlrp.sql devido a questão da precedência entre objetos. Outras opções em http://www.orafaq.com/node/2008
o utlrp.sql também é melhor na questão de “public synonyms”, que nesse script precisaríamos editar… 🙂