Social Icons

26 de fev. de 2018

Erro ORA-22818 ao criar visão materializada



 
Olá pessoal,

     Como informado no vídeo do post Retorno às atividades em 2018..., normalmente gosto de publicar aqui no blog artigos longos e completos que exploram bem um determinado assunto, mas esses artigos levam muito tempo para escrever, portanto, para compartilhar mais conhecimento com vocês, começarei agora (a partir deste post) a escrever também, posts mais curtos sobre aquilo que estou trabalhando no meu cotidiano e que acho interessante compartilhar. 
  
     Neste post vou compartilhar a experiência de um problema que tive na semana passada ao tentar criar uma visão materializada. Tudo começou quando um DEV abriu uma solicitação para a equipe de Banco de Dados criar uma MV (Materialized View) a partir de um SELECT que ele nos passou. Peguei a solicitação e fui criar a MV em um BD de homologação e adivinhem o que aconteceu? Ocorreu o erro ORA-22818:

ORA-22818: expressões de subconsulta não permitidas aqui
22818. 00000 -  "subquery expressions not allowed here"
*Cause:    An attempt was made to use a subquery expression where these
           are not supported.
*Action:   Rewrite the statement without the subquery expression.

     Fui pesquisar no MOS sobre o erro acima e achei o doc "Bug 3644243 : CAN'T CREATE MATERIALIZED VIEWS BASED ON SUBQUERY VIEW AFTER8.1.7 -> 9.2 UPGRADE"Nele, entre diversas informações, descobri que tratava-se de um bug que teria sido resolvido na versão 10.2.0, porém eu estava executando o código na versão 12.2.0 e o erro ainda estava acontecendo. Descobri nesse doc que o erro ocorria por causa de uma linha do SQL que continha uma subquery na lista de colunas, como no exemplo da imagem abaixo:


     O que fiz para resolver o problema? Ao invés de gastar mais tempo tentando encontrar alguma solução mais demorada ou abrindo um SR no MOS para que a Oracle pudesse criar um patch específico para o meu ambiente, achei mais fácil e rápido apenas reescrever o código do SQL eliminando a subquery na lista de colunas, ficando o resultado final similar ao que você pode ver na imagem abaixo:


Por hoje é só!
[]s
    

0 comments:

Postar um comentário

 

LINKS ÚTEIS

Total de visualizações de página

Seguidores

Meu One Drive (antigo Sky Drive)