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


Responder a