Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico Mária Cristina Silva Stricker mariancrist...@gmail.com [oracle_br]
Boa Tarde!
Chiappa, analisei o outro ambiente não encontrei um *Refresh Group* criado
neste ambiente, verifiquei o parâmetro e estão iguais nos ambientes.

SQL show parameter QUERY_REWRITE_INTEGRITY;

NAME TYPEVALUE
 ---
--
query_rewrite_integrity  string  enforced


Bom criei um Refresh Group* (achei bem interessante o processo) *no
ambiente que está com esse erro pra ver se resolveria, porém não resolveu,
como não tenho experiencia com esse procedimento, pesquisei mas não achei
nada que tivesse algum parâmetro de entrada pra obrigar a recompilar as
views, quando o refresh group é executado... *Alias você sabe se existe uma
forma de passar um parâmetro que force isso? Se sim já lhe agradeço muito.*

Estou abrindo um chamado na Oracle, porque realmente preciso dar uma
resposta precisa para meu cliente sobre esse ocorrido, mesmo que seja de
algum documento da Oracle que me diga que isso é comum de ocorrer, aos meus
olhos não consigo acreditar que seja *NORMAL*, por isso vou encher o saco
da Oracle até eles me darem um retorno.

Agradeço atenção de todos vocês.



Em 13 de janeiro de 2015 10:55, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Opa, então : na verdade, se a MV é REFRESH ON DEMMAND, é ** conceitual **
 que após qualquer alteração de dados e/ou estrutura a mv ficou DIFERENTE
 das tabelas/objetos base, então ela VAi ficar inválida, exemplo (em
 11.2.0.1 mas afaik é o mesmo nos outros 11gr2) :

 SYSTEM:@o11201:SQLget 1.sql
   1  -- Create table
   2  create table MARIAN_TESTE
   3  (
   4nome VARCHAR2(10),
   5id   NUMBER not null
   6  );
   7  -- Create/Recreate primary, unique and foreign key constraints
   8  alter table MARIAN_TESTE
   9add constraint PK_MARIAN_TESTE primary key (ID);
  10  -- Create table
  11  create table MARIAN_TESTE2
  12  (
  13nome VARCHAR2(10),
  14id   NUMBER not null
  15  );
  16  -- Create/Recreate primary, unique and foreign key constraints
  17  alter table MARIAN_TESTE2
  18add constraint PK_MARIAN_TESTE2 primary key (ID);
  19  -- Create table
  20  create table MARIAN_TESTE3
  21  (
  22nome VARCHAR2(10),
  23id   NUMBER not null
  24  );
  25  -- Create/Recreate primary, unique and foreign key constraints
  26  alter table MARIAN_TESTE3
  27add constraint PK_MARIAN_TESTE3 primary key (ID);
  28  INSERT INTO MARIAN_TESTE
  29  VALUES('MARIAN',1);
  30  INSERT INTO MARIAN_TESTE
  31  VALUES('MARIAN',2);
  32  INSERT INTO MARIAN_TESTE
  33  VALUES('MARIAN',3);
  34  INSERT INTO MARIAN_TESTE2
  35  VALUES('MARIAN',1);
  36  INSERT INTO MARIAN_TESTE2
  37  VALUES('MARIAN',2);
  38  INSERT INTO MARIAN_TESTE2
  39  VALUES('MARIAN',3);
  40  INSERT INTO MARIAN_TESTE3
  41  VALUES('MARIAN',1);
  42  INSERT INTO MARIAN_TESTE3
  43  VALUES('MARIAN',2);
  44  INSERT INTO MARIAN_TESTE3
  45  VALUES('MARIAN',3);
  46  commit;
  47  create materialized view mv_teste_marian
  48  refresh force on demand
  49  start with to_date('12-01-2015 13:46:42', 'dd-mm- hh24:mi:ss')
 next SYSDATE + 5/1152
  50  as
  51  SELECT t.nome, t.id
  52  FROM MARIAN_TESTE T, MARIAN_TESTE2 T2, MARIAN_TESTE3 T3
  53  WHERE T.ID = T2.ID
  54  AND T.ID = T3.ID
  55* AND T2.ID = T3.ID;
  56  .
 SYSTEM:@o11201:SQL

 SYSTEM:@o11201:SQL@1.sql

 Tabela criada.


 Tabela alterada.


 Tabela criada.


 Tabela alterada.


 Tabela criada.


 Tabela alterada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 1 linha criada.


 Commit concluído.


 View materializada criada.

 == nesse momento a mv está FRESCA , Válida e Não necessita de compilação :

 SYSTEM:@o11201:SQLselect owner, mview_name, query, staleness,
 last_refresh_date, stale_since, compile_state from user_mviews;

 OWNERMVIEW_NAME QUERY
  --
 
 STALENESS   LAST_REF STALE_SI COMPILE_STATE
 ---   ---
 SYSTEM   MV_TESTE_MARIANSELECT t.nome, t.id
 FROM MARIAN_TESTE T,
 MARIAN_TESTE2 T2, MARIAN_TESTE3 T3
 WHERE T.ID = T2.ID
 AND T.ID = T3.ID
 AND T2.ID = T3.ID
 FRESH   13/01/15  VALID


 SYSTEM:@o11201:SQLselect created, last_ddl_time, timestamp, status from
 user_objects where object_name='MV_TESTE_MARIAN';

 CREATED  LAST_DDL TIMESTAMP   STATUS
   --- ---
 13/01/15 13/01/15 2015-01-13:10:30:07 VALID
 13/01/15 13/01/15 2015-01-13:10:30:08 VALID

 == ok, agora vou 

[oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Eu consigo pensar nas seguintes possibilidades :

a. Qualquer um dos objetos referenciados pela mv foi alterado por DDL e/ou se 
tornou inválido por alterações/recompilações nas dependências deles, aí a mv 
fica inválida também

ou

b. A MV ** não é ** de REFRESH ON COMMIT, aí OBVIAMENTE qualquer operação (DML 
inclusive!!) deixou os dados/estrutura da mv diferentes dos dados/estrutura nas 
tabelas/objetos referenciados pela mv e assim causa status de invalid na mv : 
vide nota metalink After DML on the Master Table(s) of Local Materialized 
View, USER_MVIEWS.COMPILE_STATE becomes 'NEEDS_COMPILE' and USER_OBJECTS.STATUS 
becomes 'INVALID' (Doc ID 264036.1)

ou

c. os privilégios foram dados via ROLE, aí a recompilação não os rechonece : 
vide nota Compile Makes Materialized View Invalid When Access to Master Table 
Granted Via Role (Doc ID 781255.1)

  e variações destes temas Principalmente se não há DBA fixo nesse seu 
cliente, eu ** suspeitaria ** da alternativa a acima : tipicamente num caso 
desses é a farra do boi, neguim sai alterando tabelas a qquer minuto, sem 
planejar, sem saber quais objs dependem dela, e sem avisar ninguém... Mas 
levante a situação exata e a analise para saber exatamente o que está causando 
e assim poder propor um fix, que MUITO PROVAVELMENTE será de procedimento, não 
me parece ser ** nenhum ** tipo de BUG ou Problema Técnico no database, parece 
ser mesmo é erro humano ou ignorância dos Conceitos de mv...
  
[]s

  Chiappa

Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico Eriovaldo Andrietta ecandrie...@gmail.com [oracle_br]
Olá,

Mária Cristina,

1.) Se você olhar a coluna user_jobs.failure e a mesma estiver com 0 (zero)
significa que o refresh da mview está acontecendo sem erros e o resultado
esperado está garantido.

2.) Já vi uma análise desse tipo onde esse INVALID significa que os dados
deste objetos não são mais válidos, pois alguma das tabelas envolvidas foi
alterada. Para comprovar isso, execute o refresh da mview e veja de
imediato se ela fica válida, e logo em seguida altere alguma tabela que
está na mview e veja o que acontece.

Espero que isso ajude.

Eriovaldo



Em 13 de janeiro de 2015 07:48, Mária Cristina Silva Stricker
mariancrist...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br
escreveu:



 Bom dia!
 Agradeço as alternativas mas não tem nenhuma das suas suposições aplicadas
 a este caso, eu verifiquei todos os objetos que poderiam ser dependentes
 mas nenhum estão inválidos, simulei o ambiente criando MV minhas, criei as
 tabelas e criei a MV sobre essas tabelas para realizar os  teste, pensando
 que poderia ser algo assim, porem a MV ficou invalida também, só que não
 pelo refresh, e sim quando insiro um valor na tabela(acabei descobrir isso,
 que não é pelo refresh), qualquer insert feito ou alteração realizada na
 tabela está deixando a MV invalida.

 Essas tabelas não tem dependência nenhumas, não tem problema com permissão
 de role, simplesmente foram criadas para fazer esse TESTE, e deu o mesmo
 erro.
 Verifiquei na Internet vi que tem muitos deste problema, mas as soluções
 são paleativas e não definitivas. Gostaria de saber se alguém já passou por
 isso e pode me orientar, pensei em ser um BUG, pois só ocorre quando a MV
 tem JOIN relacionados, elas funcionam normalmente, mas ficam invalidas.

 Agradeço atenção.

 Abraços a todos.


 Em 13 de janeiro de 2015 06:45, jlchia...@yahoo.com.br [oracle_br] 
 oracle_br@yahoogrupos.com.br escreveu:



 Eu consigo pensar nas seguintes possibilidades :

 a. Qualquer um dos objetos referenciados pela mv foi alterado por DDL
 e/ou se tornou inválido por alterações/recompilações nas dependências
 deles, aí a mv fica inválida também

 ou

 b. A MV ** não é ** de REFRESH ON COMMIT, aí OBVIAMENTE qualquer operação
 (DML inclusive!!) deixou os dados/estrutura da mv diferentes dos
 dados/estrutura nas tabelas/objetos referenciados pela mv e assim causa
 status de invalid na mv : vide nota metalink After DML on the Master
 Table(s) of Local Materialized View, USER_MVIEWS.COMPILE_STATE becomes
 'NEEDS_COMPILE' and USER_OBJECTS.STATUS becomes 'INVALID' (Doc ID 264036.1)

 ou

 c. os privilégios foram dados via ROLE, aí a recompilação não os
 rechonece : vide nota Compile Makes Materialized View Invalid When Access
 to Master Table Granted Via Role (Doc ID 781255.1)

   e variações destes temas Principalmente se não há DBA fixo nesse
 seu cliente, eu ** suspeitaria ** da alternativa a acima : tipicamente num
 caso desses é a farra do boi, neguim sai alterando tabelas a qquer minuto,
 sem planejar, sem saber quais objs dependem dela, e sem avisar ninguém...
 Mas levante a situação exata e a analise para saber exatamente o que está
 causando e assim poder propor um fix, que MUITO PROVAVELMENTE será de
 procedimento, não me parece ser ** nenhum ** tipo de BUG ou Problema
 Técnico no database, parece ser mesmo é erro humano ou ignorância dos
 Conceitos de mv...

 []s

   Chiappa




 --
 Abraços,
 Mária Cristina
 E-mail: mariancrist...@gmail.com
 MSN:   mcristinasil...@hotmail.com
 --
 O começo é a parte mais importante do trabalho.
 - Platão

  



Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico Mária Cristina Silva Stricker mariancrist...@gmail.com [oracle_br]
Olá Eriovaldo!

A coluna FAILURES está = 0 sim, hoje eu percebi que não é mesmo refresh que
a faz ficar invalida, e sim a quando ocorre algum insert ou update em
alguma tabela que a view utiliza. E se você recompilar, ela fica valida
novamente, porém quando ocorre alguma alteração ou inserção ela volta
novamente a ficar invalida.

Quanto aos dados, eu analisei e atualiza corretamente, só que o me intriga
é está invalida, pois para um sistema de monitoramento que temos aqui
internamente, ele nos alerta como se estivesse com se esse cliente
estivesse com esse erro, sempre.





Em 13 de janeiro de 2015 08:37, Eriovaldo Andrietta ecandrie...@gmail.com
[oracle_br] oracle_br@yahoogrupos.com.br escreveu:



 Olá,

 Mária Cristina,

 1.) Se você olhar a coluna user_jobs.failure e a mesma estiver com 0
 (zero) significa que o refresh da mview está acontecendo sem erros e o
 resultado esperado está garantido.

 2.) Já vi uma análise desse tipo onde esse INVALID significa que os dados
 deste objetos não são mais válidos, pois alguma das tabelas envolvidas foi
 alterada. Para comprovar isso, execute o refresh da mview e veja de
 imediato se ela fica válida, e logo em seguida altere alguma tabela que
 está na mview e veja o que acontece.

 Espero que isso ajude.

 Eriovaldo



 Em 13 de janeiro de 2015 07:48, Mária Cristina Silva Stricker
 mariancrist...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br
 escreveu:



 Bom dia!
 Agradeço as alternativas mas não tem nenhuma das suas suposições
 aplicadas a este caso, eu verifiquei todos os objetos que poderiam ser
 dependentes mas nenhum estão inválidos, simulei o ambiente criando MV
 minhas, criei as tabelas e criei a MV sobre essas tabelas para realizar os
  teste, pensando que poderia ser algo assim, porem a MV ficou invalida
 também, só que não pelo refresh, e sim quando insiro um valor na
 tabela(acabei descobrir isso, que não é pelo refresh), qualquer insert
 feito ou alteração realizada na tabela está deixando a MV invalida.

 Essas tabelas não tem dependência nenhumas, não tem problema com
 permissão de role, simplesmente foram criadas para fazer esse TESTE, e deu
 o mesmo erro.
 Verifiquei na Internet vi que tem muitos deste problema, mas as soluções
 são paleativas e não definitivas. Gostaria de saber se alguém já passou por
 isso e pode me orientar, pensei em ser um BUG, pois só ocorre quando a MV
 tem JOIN relacionados, elas funcionam normalmente, mas ficam invalidas.

 Agradeço atenção.

 Abraços a todos.


 Em 13 de janeiro de 2015 06:45, jlchia...@yahoo.com.br [oracle_br] 
 oracle_br@yahoogrupos.com.br escreveu:



 Eu consigo pensar nas seguintes possibilidades :

 a. Qualquer um dos objetos referenciados pela mv foi alterado por DDL
 e/ou se tornou inválido por alterações/recompilações nas dependências
 deles, aí a mv fica inválida também

 ou

 b. A MV ** não é ** de REFRESH ON COMMIT, aí OBVIAMENTE qualquer
 operação (DML inclusive!!) deixou os dados/estrutura da mv diferentes dos
 dados/estrutura nas tabelas/objetos referenciados pela mv e assim causa
 status de invalid na mv : vide nota metalink After DML on the Master
 Table(s) of Local Materialized View, USER_MVIEWS.COMPILE_STATE becomes
 'NEEDS_COMPILE' and USER_OBJECTS.STATUS becomes 'INVALID' (Doc ID 264036.1)

 ou

 c. os privilégios foram dados via ROLE, aí a recompilação não os
 rechonece : vide nota Compile Makes Materialized View Invalid When Access
 to Master Table Granted Via Role (Doc ID 781255.1)

   e variações destes temas Principalmente se não há DBA fixo nesse
 seu cliente, eu ** suspeitaria ** da alternativa a acima : tipicamente num
 caso desses é a farra do boi, neguim sai alterando tabelas a qquer minuto,
 sem planejar, sem saber quais objs dependem dela, e sem avisar ninguém...
 Mas levante a situação exata e a analise para saber exatamente o que está
 causando e assim poder propor um fix, que MUITO PROVAVELMENTE será de
 procedimento, não me parece ser ** nenhum ** tipo de BUG ou Problema
 Técnico no database, parece ser mesmo é erro humano ou ignorância dos
 Conceitos de mv...

 []s

   Chiappa




 --
 Abraços,
 Mária Cristina
 E-mail: mariancrist...@gmail.com
 MSN:   mcristinasil...@hotmail.com
 --
 O começo é a parte mais importante do trabalho.
 - Platão


  




-- 
Abraços,
Mária Cristina
Cel: 031-8883-5543
E-mail: mariancrist...@gmail.com
MSN:   mcristinasil...@hotmail.com
-- 
O começo é a parte mais importante do trabalho.
- Platão


Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Só pra confirmar : vc ** LEU ** na minha resposta que quando a mv Não É REFRESH 
ON COMMIT, aí QUALQUER DML em QUALQUER das tabelas automaticamente deixa a view 
INVÁLIDA , por conceito, sem ser bug nenhum, é assim MESMO q funciona ??? Vc 
TEM TOTAL CERTEZA que não é esse mesmo o caso ?

 E sobre alterações nos objetos, vc ** realmente comprovou ** isso anotando as 
datas citadas na DBA_OBJECTS após uma compilação geral que deixou zero objs 
inválidos e COMPARANDO o valor dessas colunas na próxima vez que fica inválido 
?? Pois uma coisa é alguém dizer, outra é vc ** realmente ** comprovar...
 
  []s
  
Chiappa

Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico Mária Cristina Silva Stricker mariancrist...@gmail.com [oracle_br]
Bom dia!
Agradeço as alternativas mas não tem nenhuma das suas suposições aplicadas
a este caso, eu verifiquei todos os objetos que poderiam ser dependentes
mas nenhum estão inválidos, simulei o ambiente criando MV minhas, criei as
tabelas e criei a MV sobre essas tabelas para realizar os  teste, pensando
que poderia ser algo assim, porem a MV ficou invalida também, só que não
pelo refresh, e sim quando insiro um valor na tabela(acabei descobrir isso,
que não é pelo refresh), qualquer insert feito ou alteração realizada na
tabela está deixando a MV invalida.

Essas tabelas não tem dependência nenhumas, não tem problema com permissão
de role, simplesmente foram criadas para fazer esse TESTE, e deu o mesmo
erro.
Verifiquei na Internet vi que tem muitos deste problema, mas as soluções
são paleativas e não definitivas. Gostaria de saber se alguém já passou por
isso e pode me orientar, pensei em ser um BUG, pois só ocorre quando a MV
tem JOIN relacionados, elas funcionam normalmente, mas ficam invalidas.

Agradeço atenção.

Abraços a todos.


Em 13 de janeiro de 2015 06:45, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Eu consigo pensar nas seguintes possibilidades :

 a. Qualquer um dos objetos referenciados pela mv foi alterado por DDL e/ou
 se tornou inválido por alterações/recompilações nas dependências deles, aí
 a mv fica inválida também

 ou

 b. A MV ** não é ** de REFRESH ON COMMIT, aí OBVIAMENTE qualquer operação
 (DML inclusive!!) deixou os dados/estrutura da mv diferentes dos
 dados/estrutura nas tabelas/objetos referenciados pela mv e assim causa
 status de invalid na mv : vide nota metalink After DML on the Master
 Table(s) of Local Materialized View, USER_MVIEWS.COMPILE_STATE becomes
 'NEEDS_COMPILE' and USER_OBJECTS.STATUS becomes 'INVALID' (Doc ID 264036.1)

 ou

 c. os privilégios foram dados via ROLE, aí a recompilação não os rechonece
 : vide nota Compile Makes Materialized View Invalid When Access to Master
 Table Granted Via Role (Doc ID 781255.1)

   e variações destes temas Principalmente se não há DBA fixo nesse seu
 cliente, eu ** suspeitaria ** da alternativa a acima : tipicamente num caso
 desses é a farra do boi, neguim sai alterando tabelas a qquer minuto, sem
 planejar, sem saber quais objs dependem dela, e sem avisar ninguém... Mas
 levante a situação exata e a analise para saber exatamente o que está
 causando e assim poder propor um fix, que MUITO PROVAVELMENTE será de
 procedimento, não me parece ser ** nenhum ** tipo de BUG ou Problema
 Técnico no database, parece ser mesmo é erro humano ou ignorância dos
 Conceitos de mv...

 []s

   Chiappa
  




-- 
Abraços,
Mária Cristina
E-mail: mariancrist...@gmail.com
MSN:   mcristinasil...@hotmail.com
-- 
O começo é a parte mais importante do trabalho.
- Platão


Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Opa, então : na verdade, se a MV é REFRESH ON DEMMAND, é ** conceitual ** que 
após qualquer alteração de dados e/ou estrutura a mv ficou DIFERENTE das 
tabelas/objetos base, então ela VAi ficar inválida, exemplo (em 11.2.0.1 mas 
afaik é o mesmo nos outros 11gr2) : 

SYSTEM:@o11201:SQLget 1.sql
  1  -- Create table
  2  create table MARIAN_TESTE
  3  (
  4nome VARCHAR2(10),
  5id   NUMBER not null
  6  );
  7  -- Create/Recreate primary, unique and foreign key constraints
  8  alter table MARIAN_TESTE
  9add constraint PK_MARIAN_TESTE primary key (ID);
 10  -- Create table
 11  create table MARIAN_TESTE2
 12  (
 13nome VARCHAR2(10),
 14id   NUMBER not null
 15  );
 16  -- Create/Recreate primary, unique and foreign key constraints
 17  alter table MARIAN_TESTE2
 18add constraint PK_MARIAN_TESTE2 primary key (ID);
 19  -- Create table
 20  create table MARIAN_TESTE3
 21  (
 22nome VARCHAR2(10),
 23id   NUMBER not null
 24  );
 25  -- Create/Recreate primary, unique and foreign key constraints
 26  alter table MARIAN_TESTE3
 27add constraint PK_MARIAN_TESTE3 primary key (ID);
 28  INSERT INTO MARIAN_TESTE
 29  VALUES('MARIAN',1);
 30  INSERT INTO MARIAN_TESTE
 31  VALUES('MARIAN',2);
 32  INSERT INTO MARIAN_TESTE
 33  VALUES('MARIAN',3);
 34  INSERT INTO MARIAN_TESTE2
 35  VALUES('MARIAN',1);
 36  INSERT INTO MARIAN_TESTE2
 37  VALUES('MARIAN',2);
 38  INSERT INTO MARIAN_TESTE2
 39  VALUES('MARIAN',3);
 40  INSERT INTO MARIAN_TESTE3
 41  VALUES('MARIAN',1);
 42  INSERT INTO MARIAN_TESTE3
 43  VALUES('MARIAN',2);
 44  INSERT INTO MARIAN_TESTE3
 45  VALUES('MARIAN',3);
 46  commit;
 47  create materialized view mv_teste_marian
 48  refresh force on demand
 49  start with to_date('12-01-2015 13:46:42', 'dd-mm- hh24:mi:ss') next 
SYSDATE + 5/1152
 50  as
 51  SELECT t.nome, t.id
 52  FROM MARIAN_TESTE T, MARIAN_TESTE2 T2, MARIAN_TESTE3 T3
 53  WHERE T.ID = T2.ID
 54  AND T.ID = T3.ID
 55* AND T2.ID = T3.ID;
 56  .
SYSTEM:@o11201:SQL

SYSTEM:@o11201:SQL@1.sql

Tabela criada.


Tabela alterada.


Tabela criada.


Tabela alterada.


Tabela criada.


Tabela alterada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


1 linha criada.


Commit concluído.


View materializada criada.

== nesse momento a mv está FRESCA , Válida e Não necessita de compilação :

SYSTEM:@o11201:SQLselect owner, mview_name, query, staleness, 
last_refresh_date, stale_since, compile_state from user_mviews;

OWNERMVIEW_NAME QUERY
 -- 

STALENESS   LAST_REF STALE_SI COMPILE_STATE
---   ---
SYSTEM   MV_TESTE_MARIANSELECT t.nome, t.id
FROM MARIAN_TESTE T, 
MARIAN_TESTE2 T2, MARIAN_TESTE3 T3
WHERE T.ID = T2.ID
AND T.ID = T3.ID
AND T2.ID = T3.ID
FRESH   13/01/15  VALID


SYSTEM:@o11201:SQLselect created, last_ddl_time, timestamp, status from 
user_objects where object_name='MV_TESTE_MARIAN';

CREATED  LAST_DDL TIMESTAMP   STATUS
  --- ---
13/01/15 13/01/15 2015-01-13:10:30:07 VALID
13/01/15 13/01/15 2015-01-13:10:30:08 VALID

== ok, agora vou fazer uma alteração qquer :

SYSTEM:@o11201:SQL
SYSTEM:@o11201:SQLupdate  MARIAN_TESTE set nome = 'STRICKER' WHERE ID = 1;

1 linha atualizada.

SYSTEM:@o11201:SQLcommit;

Commit concluído.


== Óbvio, como Documentado e Esperado, a view ficou INVÀLIDA, os dados dentro 
dela estão DIFERINDO dos objetos base :

SYSTEM:@o11201:SQLselect object_name, object_type, created, last_ddl_time, 
timestamp, status from user_objects where object_name='MV_TESTE_MARIAN';

OBJECT_NAMEOBJECT_TYPE CREATED  LAST_DDL TIMESTAMP  
 STATUS
-- ---   
--- ---
MV_TESTE_MARIANTABLE   13/01/15 13/01/15 
2015-01-13:10:30:07 VALID
MV_TESTE_MARIANMATERIALIZED VIEW   13/01/15 13/01/15 
2015-01-13:10:30:08 INVALID

SYSTEM:@o11201:SQLselect owner, mview_name, query, staleness, 
last_refresh_date, stale_since, compile_state from user_mviews;

OWNERMVIEW_NAME QUERY
 -- 

STALENESS   LAST_REF STALE_SI COMPILE_STATE
---   ---
SYSTEM   MV_TESTE_MARIANSELECT t.nome, t.id
FROM MARIAN_TESTE T, 

Re: [oracle_br] Re: View Materializada está ficando descompilada.

2015-01-13 Por tôpico Mária Cristina Silva Stricker mariancrist...@gmail.com [oracle_br]
Chiappa eu li sim suas respostas.


Só pra confirmar : vc ** LEU ** na minha resposta que quando a mv Não É
REFRESH ON COMMIT, aí QUALQUER DML em QUALQUER das tabelas automaticamente
deixa a view INVÁLIDA , por conceito, sem ser bug nenhum, é assim MESMO q
funciona ??? Vc TEM TOTAL CERTEZA que não é esse mesmo o caso ?


*Resposta: *
As MV não são de REFRESH ON COMMIT, por que são MV que envolve várias
tabelas que se relacionam, e eu até tentei criar um modelo como ON COMMIT,
 mas vi que não é permitido, porém tenho outro ambiente de outro cliente
que tem as mesmas MV criadas, com as mesmas características deste cliente
com erro, a diferença que lá a MV está como: *refresh complete on demand*
por ser uma estrutura com menor fluxo de dados, lá se é possível trabalhar
assim, já nesse cliente que estou com o problema, o fluxo de dados é muito
maior: sendo assim a estrutura dele ficou como: *refresh force on demand*.

Você disse que é normal as MV ficarem invalidas, mas nesse outro ambiente
não fica, por isso estou investigando, e tentando entender já mudei para a
mesma estrutura *refresh complete on demand *e continuam invalidas, se isso
fosse comum no outro ambiente elas deveriam estár também invalidas você
concorda?

*obs*: Já fiz comparação dos parâmetros de um banco para outro,


 E sobre alterações nos objetos, vc ** realmente comprovou ** isso
anotando as datas citadas na DBA_OBJECTS após uma compilação geral que
deixou zero objs inválidos e COMPARANDO o valor dessas colunas na próxima
vez que fica inválido ?? Pois uma coisa é alguém dizer, outra é vc **
realmente ** comprovar...
*Resposta: *
Acho que você não leu quando disse que criei uma estrutura de TESTE minha,
com o cenário de tabelas independentes, conforme abaixo e assim elas ficam
invalidas quando ocorre as alterações. Creio que isso é comprovar e não
alguém falar.

---dados usados para teste.
-- Create table
create table MARIAN_TESTE
(
  nome VARCHAR2(10),
  id   NUMBER not null
);
-- Create/Recreate primary, unique and foreign key constraints
alter table MARIAN_TESTE
  add constraint PK_MARIAN_TESTE primary key (ID);

-- Create table
create table MARIAN_TESTE2
(
  nome VARCHAR2(10),
  id   NUMBER not null
);
-- Create/Recreate primary, unique and foreign key constraints
alter table MARIAN_TESTE2
  add constraint PK_MARIAN_TESTE2 primary key (ID);

-- Create table
create table MARIAN_TESTE3
(
  nome VARCHAR2(10),
  id   NUMBER not null
);
-- Create/Recreate primary, unique and foreign key constraints
alter table MARIAN_TESTE3
  add constraint PK_MARIAN_TESTE3 primary key (ID);

INSERT INTO MARIAN_TESTE
VALUES('MARIAN',1);
INSERT INTO MARIAN_TESTE
VALUES('MARIAN',2);
INSERT INTO MARIAN_TESTE
VALUES('MARIAN',3);

INSERT INTO MARIAN_TESTE2
VALUES('MARIAN',1);
INSERT INTO MARIAN_TESTE2
VALUES('MARIAN',2);
INSERT INTO MARIAN_TESTE2
VALUES('MARIAN',3);

INSERT INTO MARIAN_TESTE3
VALUES('MARIAN',1);
INSERT INTO MARIAN_TESTE3
VALUES('MARIAN',2);
INSERT INTO MARIAN_TESTE3
VALUES('MARIAN',3);

commit;

create materialized view mv_teste_marian
refresh force on demand
start with to_date('12-01-2015 13:46:42', 'dd-mm- hh24:mi:ss') next
SYSDATE + 5/1152
as
SELECT t.nome, t.id
FROM MARIAN_TESTE T, MARIAN_TESTE2 T2, MARIAN_TESTE3 T3
WHERE T.ID = T2.ID
AND T.ID = T3.ID
AND T2.ID = T3.ID;

--verificar se ela vai está valida
depois executa a alteração:

update  MARIAN_TESTE set nome = 'STRICKER' WHERE ID = 1;
commit;





Em 13 de janeiro de 2015 09:39, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:



 Só pra confirmar : vc ** LEU ** na minha resposta que quando a mv Não É
 REFRESH ON COMMIT, aí QUALQUER DML em QUALQUER das tabelas automaticamente
 deixa a view INVÁLIDA , por conceito, sem ser bug nenhum, é assim MESMO q
 funciona ??? Vc TEM TOTAL CERTEZA que não é esse mesmo o caso ?

  E sobre alterações nos objetos, vc ** realmente comprovou ** isso
 anotando as datas citadas na DBA_OBJECTS após uma compilação geral que
 deixou zero objs inválidos e COMPARANDO o valor dessas colunas na próxima
 vez que fica inválido ?? Pois uma coisa é alguém dizer, outra é vc **
 realmente ** comprovar...

   []s

 Chiappa
  




-- 
Abraços,
Mária Cristina
Cel: 031-8883-5543
E-mail: mariancrist...@gmail.com
MSN:   mcristinasil...@hotmail.com
-- 
O começo é a parte mais importante do trabalho.
- Platão