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]

Responder a