You are on page 1of 2

FATEC – Faculdade de Tecnologia de Guaratinguetá 

Bancos de Dados Distribuídos 
Professor Leandro Guarino 
 
 
VIEWS MATERIALIZADAS (MATERIALIZED VIEWS) 
 
Uma  view  materializada  é  um  objeto  de  banco  de  dados  que  contém  resultados  de  uma  consulta.  A  cláusula 
FROM da consulta pode conter tabelas, views e outras views materializadas. Esses objetos podem ser chamados 
ainda  de  master  tables  (um  termo  usado  para  replicação)  ou  detail  tables  (um  termo  usado  para 
datawarehouse). Os bancos de dados que contém views materializadas são chamados de master databases. 
 
Para os objetivos da replicação, as views materializadas permitem manter cópias de dados remotos em um banco 
de dados local. As cópias podem ser atualizáveis por meio da característica de Replicação Avançada do Oracle e 
podem ser somente‐leitura sem essa característica. Para selecionar dados de uma view materializada, utiliza‐se a 
mesma forma de manipulação de uma tabela ou view.  
 
Pré‐requisitos 
Os privilégios requeridos para criar uma view materializada podem ser garantidos por meio de uma role. 
Para criar uma view materializada no seu próprio esquema, o usuário: 
• Deve  ter  o  privilégio  CREATE  MATERIALIZED  VIEW  e  ambos  os  privilégios  CREATE  TABLE  e  CREATE  ANY 
TABLE; 
• Deve  ter  os  privilégios  SELECT  e  SELECT  ANY  TABLE  nas  tabelas  que  possuem  os  dados  que  deseja 
selecionar. 
 
Principais cláusulas para replicação de dados 
• BUILD: esta cláusula especifica como a view materializada será populada. 
o IMMEDIATE: indica que a view materializada será populada no momento de sua criação; 
o DEFERRED: indica que a view materializada será populada na próxima operação REFRESH 
• REFRESH:  refere‐se aos métodos, modos e tempos para a atualização da view materializada. 
o FAST:  método incremental que realiza a atualização de acordo com as mudanças que ocorreram 
nas master tables. As mudanças feitas por comandos DML são armazenadas em um log de view 
materializada associado à master table. 
o COMPLETE: método completo que atualizará todos os dados da view materializada, mesmo que 
seja possível realizar uma atualização incremental. 
o FORCE: realiza uma atualização incremental se for possível; caso não seja, realiza uma atualização 
completa. 
o ON  COMMIT:  realiza  uma  atualização  incremental  toda  vez  que  uma  operação  COMMIT  for 
realizada na master table da view materializada. Não permite executar uma transação distribuída 
em qualquer master table da view materializada. 
o ON DEMAND: especifica que não será feita uma atualização da view materializada a menos que 
seja manual por meio da execução das procedures DBMS_VIEW. 
o START  WITH:  define  uma  data  de  início  para  a  atualização  dos  dados  da  view  materializada. 
Associada à cláusula NEXT, permite realizar atualizações temporárias. 
 
LOGS DE VIEWS MATERIALIZADAS (MATERIALIZED VIEW LOG) 
Os logs de views materializados são usados para a sincronização entre a master table e a view. Antes da criação 
da view materializada, a master table deve ser associada a um log. 
 
A seguir, há uma sequencia de passos para a criação e atualização de views materializadas. 
 
1. No servidor de banco de  dados A, crie um  log de view materializada associado à tabela que contém os 
dados que serão replicados; 
 
create materialized view log on nome_da_tabela;
--cria um log de view materializada associado à tabela nome_da_tabela.
 
2. Crie um database link do servidor B para o servidor A; 
 
create database link nome_do_database_link
connect to usuario identified by senha
using 'SID_do_bd_no_servidor_A';
 
3. No  servidor  de  banco  de  dados  B,  crie  uma  view  materializada  referente  à  tabela  do  servidor  A. 
Certifique‐se de que o usuário que criará a view materializada possui o privilégio CREATE MATERIALIZED 
VIEW; 
 
grant CREATE MATERIALIZED VIEW to nome_da_role;
--dá privilégio CREATE MATERIALIZED VIEW a uma role chamada
nome_da_role.

create materialized view vwmCargos


--cria a view materializada vwmCargos
build immediate
--sincroniza com a tabela do servidor A no momento da criação da view
refresh force start with sysdate next sysdate + 1/86400
--atual de forma incremental a cada 1 segundo
as select * from cargos@nome_do_database_link;
--seleciona os dados da tabela “cargos” do servidor A
 
Para executar uma atualização manual, é possível utilizar a procedure DBMS_VIEW.REFRESH, conforme a seguinte 
sintaxe: 
 
call dbms_mview.refresh('nome_da_view_materializada','forma_de_atualização');
 
As formas de atualização podem ser F (fast), C (complete) e ? (force). 
 
Referência 
ORACLE. SQL Language Reference 11g Release (11.1). Setembro, 2008. 

You might also like