Página 1 de 1

Criando view materializada

Enviado: Qui, 20 Set 2012 6:50 pm
por Robson Costa
olá,

Estou tentando criar uma view materializada e está dando o erro ORA-00905: missing keyword. O que pode estar acontecendo?

Detalhe: em um banco com versão 11g, não dá erro. Em um com versão 10G, dá este erro.

Re: Criando view materializada

Enviado: Sex, 21 Set 2012 8:16 am
por DanielNN
Cara,
o melhor é postar sua view.
Mas talvez sua view usa algumas funções específicas da versão 11.

Re: Criando view materializada

Enviado: Sex, 21 Set 2012 9:43 am
por Robson Costa
O comando que está sendo executado é este:

Selecionar tudo

CREATE MATERIALIZED VIEW "VWM_VIEW" 
 ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT)
  TABLESPACE "..." 
  BUILD IMMEDIATE
  USING INDEX 
  REFRESH COMPLETE ON DEMAND
  USING DEFAULT LOCAL ROLLBACK SEGMENT
  USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
  AS SELECT ....
  FROM TAB1@LINK z, TAB2@LINK b, TAB3@LINK l
 WHERE z.cod=...
 AND z.cod_b=b.cod
 AND z.cod_l=l.cod;

Re: Criando view materializada

Enviado: Sex, 21 Set 2012 11:40 am
por DanielNN
Não sei se você precisa de todas essas opções em sua MV mas vamos lá.

Dividi aqui a parte problemática:

Selecionar tudo

USING DEFAULT LOCAL ROLLBACK SEGMENT
USING ENFORCED CONSTRAINTS 
DISABLE QUERY REWRITE
No 10 não dá para criar a MV com esses 2 USING. Se tentar assim funciona:

Selecionar tudo

USING DEFAULT LOCAL ROLLBACK SEGMENT ENFORCED CONSTRAINTS 
DISABLE QUERY REWRITE
não sei lhe dizer porque, talvez alteraram levemente a sintaxe do 10 para o 11.

Re: Criando view materializada

Enviado: Qui, 16 Mai 2013 5:18 pm
por fbifabio
Robson Costa,

Para evitar problemas, é uma boa prática não incluir no comando as cláusulas de armazenamento do BD. Execute-o como no exemplo abaixo:

Selecionar tudo

CREATE MATERIALIZED VIEW "VWM_VIEW" 
BUILD IMMEDIATE
USING INDEX 
REFRESH COMPLETE ON DEMAND
USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
AS SELECT ....
FROM TAB1@LINK z, TAB2@LINK b, TAB3@LINK l
WHERE z.cod=...
AND z.cod_b=b.cod
AND z.cod_l=l.cod;
[]s