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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html