Bom dia Galera, estou aqui novamente e hoje com uma pergunta fácil acho eu.
Queria saber qual a diferença de criar uma Materialized VIew com Refresh Fast ou com Referesh Force e com Refresh Complete, pois estou tentando criar uma Refresh Fast e me diz que não posso criar com uma query mais avançada, e as documentações me dizem para colocar FORCE ou COMPLETE.
Dúvida Materialized View FAST, FORCE, COMPLETE
-
- Rank: Programador Sênior
- Mensagens: 60
- Registrado em: Ter, 17 Jan 2006 1:45 pm
- Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Pois é: existe uma série de restrições pra criação de materialized views. Neste link está sendo falado exatamente sobre isso:
http://glufke.net/oracle/viewtopic.php?t=735
http://glufke.net/oracle/viewtopic.php?t=1720
(eu não sei de cor as restrições, terá que consultar a documentação).
http://glufke.net/oracle/viewtopic.php?t=735
http://glufke.net/oracle/viewtopic.php?t=1720
(eu não sei de cor as restrições, terá que consultar a documentação).
-
- Rank: Programador Sênior
- Mensagens: 60
- Registrado em: Ter, 17 Jan 2006 1:45 pm
- Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Sim as restrições eu sei que tem mas eu queria saber qual a diferença entre as três maneiras só isso, eu sei que a FAST pega somente os registros novos e a COMPLETE pega tudo toda vez e a FORCE faz o que??
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Seg, 16 Nov 2015 12:59 pm
Respondendo sua pergunta:
[/code]ALIZED VIEW LOG "
COMPLETE "Trunca a tabela e faz o novo insert "
FORCE "Oracle tenta fazer um FAST Refresh se não for possível, então, COMPLETE"
]
ON [COMMIT "Atualização deverá ocorrer sempre que o banco de dados comete uma transação em uma das tabela principais da visualização materializada"
DEMAND "O oracle não atualizara a exibição materializada, a menos que o usário execute a atualização via DBMS_MVIEW"
NEVER "Não faz Atualização"
]
START WITH "Expecifica uma data ou hora ou tempo para atualização automatica"
NEXT
[[ENABLE | DISABLE] QUERY REWRITE]
[/code]
BUILD [IMMEDIATE "A view é preenchida imediatamente"
DEFERRED] "A view é preenchida no proximo refresh"
REFRESH [FAST "Insere ou exclui as linhas que foram alteradas- precisa definir MATERI[code][code]
COMPLETE "Trunca a tabela e faz o novo insert "
FORCE "Oracle tenta fazer um FAST Refresh se não for possível, então, COMPLETE"
]
ON [COMMIT "Atualização deverá ocorrer sempre que o banco de dados comete uma transação em uma das tabela principais da visualização materializada"
DEMAND "O oracle não atualizara a exibição materializada, a menos que o usário execute a atualização via DBMS_MVIEW"
NEVER "Não faz Atualização"
]
START WITH "Expecifica uma data ou hora ou tempo para atualização automatica"
NEXT
[[ENABLE | DISABLE] QUERY REWRITE]
[/code]
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qua, 06 Set 2017 10:47 am
A partir da dúvida do amigo sobre as diferenças entre FAST, FORCE e COMPLETE, gostaria que alguém me ajudasse.
Criei uma VM em um cliente que traz todas as vendas realizadas, com seus itens, clientes, etc...Essa VM é atualizada diariamente à 1 hora da manhã e alimenta os diversos Dashboards de análises comerciais.
Minha dúvida sempre foi se com o passar dos anos esse processamento na madrugada de cada dia chegaria a consumir muito recurso do banco de dados (Oracle Database 12c Standard Edition Release 12.2.0.1.0) ao ponto de "derrubar" o sistema.
Configurei a VM para que realizasse o REFRESH COMPLETE. Hoje me veio uma dúvida em saber quanto tempo, esses 7 meses de informações, está demorando para processar por completo. Entendo que o COMPLETE é reprocessar TUDO todo dia. Mas ao abrir o TOAD e ver as informações da VM, verifiquei que o LAST REFRESH estava 02/08/2019 01:00:18. Se a atualização inicia à 1 hora, espantei em ver que o processamento durou 18 segundos. Saí procurando e vi esse tópico e aproveitando, gostaria de saber se o REFRESH COMPLETE apenas faz o complemento das informações novas na base que já está lá ou se realmente processa tudo!?
Parâmetros da VM:
Criei uma VM em um cliente que traz todas as vendas realizadas, com seus itens, clientes, etc...Essa VM é atualizada diariamente à 1 hora da manhã e alimenta os diversos Dashboards de análises comerciais.
Minha dúvida sempre foi se com o passar dos anos esse processamento na madrugada de cada dia chegaria a consumir muito recurso do banco de dados (Oracle Database 12c Standard Edition Release 12.2.0.1.0) ao ponto de "derrubar" o sistema.
Configurei a VM para que realizasse o REFRESH COMPLETE. Hoje me veio uma dúvida em saber quanto tempo, esses 7 meses de informações, está demorando para processar por completo. Entendo que o COMPLETE é reprocessar TUDO todo dia. Mas ao abrir o TOAD e ver as informações da VM, verifiquei que o LAST REFRESH estava 02/08/2019 01:00:18. Se a atualização inicia à 1 hora, espantei em ver que o processamento durou 18 segundos. Saí procurando e vi esse tópico e aproveitando, gostaria de saber se o REFRESH COMPLETE apenas faz o complemento das informações novas na base que já está lá ou se realmente processa tudo!?
Parâmetros da VM:
NOCACHE
LOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH TO_DATE('03-ago-2019 01:00:00','dd-mon-yyyy hh24:mi:ss')
NEXT (TRUNC (SYSDATE+1) + 1/24 )
WITH PRIMARY KEY
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Aqui tem um link bem interessante sobre esse assunto, tempo de geração, refresh complete, etc:
https://technology.amis.nl/2014/08/15/m ... -recreate/
Ele sugere que é mais rápido dropar e recriar a MV, do que fazer REFRESH COMPLETE... Essa é opinião dele, eu não parei pra pensar se isso realmente vale a pena.
E neste link, tem um exemplo que mostra que o REFRESH COMPLETE realmente muda os ROWIDs das linhas:
http://www.sqlsnippets.com/en/topic-12876.html
https://technology.amis.nl/2014/08/15/m ... -recreate/
Ele sugere que é mais rápido dropar e recriar a MV, do que fazer REFRESH COMPLETE... Essa é opinião dele, eu não parei pra pensar se isso realmente vale a pena.
E neste link, tem um exemplo que mostra que o REFRESH COMPLETE realmente muda os ROWIDs das linhas:
http://www.sqlsnippets.com/en/topic-12876.html
Materialized Views
REFRESH COMPLETE
There are various ways to refresh the data in a materialized view, the simplest way being a complete refresh. When a complete refresh occurs the materialized view's defining query is executed and the entire result set replaces the data currently residing in the materialized view. The REFRESH COMPLETE clause tells Oracle to perform complete refreshes by default when a materialized view is refreshed.
create materialized view mv REFRESH COMPLETE as select * from t ;
Let's see a complete refresh in action now. We will use the DBMS_MVIEW.REFRESH procedure to initiate it. The "list" parameter accepts a list of materialized views to refresh (in our case we only have one) and the "method" parameter accepts a "C", for Complete refresh.
select key, val, rowid from mv ;
KEY VAL ROWID ---------- ----- ------------------ 1 a AAAWgHAAEAAAAIEAAA 2 b AAAWgHAAEAAAAIEAAB 3 c AAAWgHAAEAAAAIEAAC 4 AAAWgHAAEAAAAIEAAD
execute DBMS_MVIEW.REFRESH( LIST => 'MV', METHOD => 'C' ); select key, val, rowid from mv ;
KEY VAL ROWID ---------- ----- ------------------ 1 a AAAWgHAAEAAAAIEAAE 2 b AAAWgHAAEAAAAIEAAF 3 c AAAWgHAAEAAAAIEAAG 4 AAAWgHAAEAAAAIEAAH
Note how the rowids in the second query differ from those of the first, even though the data in table T was unchanged throughout. This is because complete refreshes create a whole new set of data, even when the new result set is identical to the old one.
If a materialized view contains many rows and the base table's rows change infrequently refreshing the materialized view completely can be an expensive operation. In such cases it would be better to process only the changed rows. We will explore this type of refresh next.
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qua, 06 Set 2017 10:47 am
Esses links me ajudaram muito. Obrigado!
Entendi a sistemática do REFRESH COMPLETE e FAST.
Ajustei as VM para FAST e criei as VM Log para armazenar temporariamente as informações que foram alteradas. Agora só os registros novos, editados ou excluídos serão incrementados na VM.
VM Log:
Entendi a sistemática do REFRESH COMPLETE e FAST.
Ajustei as VM para FAST e criei as VM Log para armazenar temporariamente as informações que foram alteradas. Agora só os registros novos, editados ou excluídos serão incrementados na VM.
VM Log:
CREATE MATERIALIZED VIEW LOG ON BASEPRD.TABELA
TABLESPACE BASEPRD
PCTUSED 0
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOCACHE
LOGGING
NOPARALLEL
WITH ROWID
EXCLUDING NEW VALUES;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 28 visitantes