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 [mailto:oracle...@yahoogrupos.com.br] Em
nome de Claudinho
Enviada em: segunda-feira, 10 de maio de 2010 15:56
Para: oracle_br@yahoogrupos.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]

Responder a