Complementando o Gerson, existem algumas circunstâncias em que o Oracle *não tem sucesso* recompilando a package, mesmo não havendo erros. Isso ocorre quando você possui dependências remotas (via db_link por exemplo).
Dá uma olhada nesse link. Ele é bem esclarecedor. http://oracletoday.blogspot.com/2009/02/remote-dependencies.html Abraços, Marcelo Medrado Em 10 de maio de 2010 17:34, Gerson Junior <gerson.vasconce...@gmail.com>escreveu: > Sempre que um objeto é utilizado e está inválido, o banco tenta validar. > > Seja package, procedure, trigger... sempre que é chamado o objeto e ele > estiver inválido, será automaticamente recompilado, caso exista algum > problema que impossibilite a re-validação aí sim, vai estourar um erro para > a aplicação. > > Espero que tenha ficado claro! > > > > > Atc. > Gerson S. de Vasconcelos Júnior > OCA DBA - Oracle Certified Associate > Fone: (81) 9103-4984 > Msn: gerson.vasconce...@gmail.com > Skype: gersonvjunior > http://www.diaadiaoracle.com.br/ > > > Em 10 de maio de 2010 17:24, Dênio Flávio Garcia da Silva < > de...@nbsi.com.br > > escreveu: > > > > > > > Boa tarde, > > > > Se eu tenho uma package com erros de compilação, por exemplo, uma > > determinada coluna faltando numa tabela. > > > > Se eu criar a coluna na tabela, é necessário eu recompilar a package? > > > > Se minha aplicação chamar a package sem antes dar o comando alter > > recompile, o Oracle vai conseguir desempenhar a rotina da package? > > > > Obrigado > > > > Denio > > > > De: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> > [mailto: > > oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>] Em > > nome de Claudinho > > Enviada em: segunda-feira, 10 de maio de 2010 15:56 > > Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> > > Assunto: [oracle_br] DBMS_ADVANCED_REWRITE > > > > Boa tarde pessoal, > > > > Tenho um banco de dados para o qual é enviado um comando com hint. > > A hint está fazendo besteira, o plano de execução fica muito melhor sem > > ela. > > Ao invés de alterar a aplicação direto, gostaríamos de fazer alguns teste > > antes para validar o real ganho no processo. Segundo a Oracle seria > > possível > > remover a hint utilizando o DBMS_ADVANCED_REWRITE, porém estou tendo > > dificuldades ao utilizar este recurso. > > > > Segue um cenário que ilustra o problema que estamos encontrando: > > > > Tenho um usuário user1 e uma tabela tabtest; > > create table tabtest (num integer, mensag varchar2(10)); > > > > Tentei então eliminar a hint reescrevendo o plano: > > > > SQL> BEGIN > > 2 SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( > > 3 NAME => 'Teste', > > 4 SOURCE_STMT => 'Select /*+ rule*/ NUM, MENSAG from user1.tabtest > > order by NUM', > > 5 DESTINATION_STMT => 'Select NUM, MENSAG from user1.tabtest order by > > NUM', > > 6 VALIDATE => FALSE, > > 7 REWRITE_MODE => 'TEXT_MATCH'); > > 8 END; > > 9 / > > BEGIN > > * > > ERRO na linha 1: > > ORA-30394: source statement identical to the destination statement > > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 29 > > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 185 > > ORA-06512: at line 2 > > > > Apesar de os comandos não serem idênticos, o Oracle entede que são. Ao > > tentar diferenciá-los (where 1=1) obtenho um outro erro: > > > > SQL> BEGIN > > 2 SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( > > 3 NAME => 'Teste', > > 4 SOURCE_STMT => 'Select /*+ rule*/ NUM, MENSAG from user1.tabtest > > order by NUM', > > 5 DESTINATION_STMT => 'Select NUM, MENSAG from user1.tabtest where 1=1 > > order by NUM', > > 6 VALIDATE => FALSE, > > 7 REWRITE_MODE => 'TEXT_MATCH'); > > 8 END; > > 9 / > > BEGIN > > * > > ERRO na linha 1: > > ORA-30389: the source statement is not compatible with the destination > > statement > > ORA-00907: missing right parenthesis > > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 29 > > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 185 > > ORA-06512: at line 2 > > > > > > Alguém já passou por isso? > > Alguma sugestão? > > > > > > > > Atenciosamente, > > Cláudio Moraes > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > -- > > Mensagem verificada pelo sistema de antivírus da Aser Security. > > > > -- > > Mensagem verificada pelo sistema de antivírus da Aser Security. > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > > -------------------------------------------------------------------------------------------------------------------------- > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > -------------------------------------------------------------------------------------------------------------------------- > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure > » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: > http://www.oraclebr.com.br/ > ------------------------------------------------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > > [As partes desta mensagem que não continham texto foram removidas]