Pular para o conteúdo

DBMS_MVIEW: Manutenção e Gerenciamento de Materialized Views no Oracle

DBMS_MVIEW: Manutenção e Gerenciamento de Materialized Views no Oracle

Introdução

Materialized Views (MViews) são objetos poderosos no Oracle Database que armazenam os resultados de uma consulta e podem ser referenciados como tabelas. Elas melhoram o desempenho de consultas ao pré-calcular e armazenar os resultados, reduzindo a necessidade de processamento repetitivo de grandes conjuntos de dados. O pacote DBMS_MVIEW no Oracle 19c oferece uma série de funcionalidades para facilitar a manutenção e o gerenciamento eficientes dessas visões materializadas.

Principais Funções do DBMS_MVIEW

  1. Refresh de Materialized Views: O DBMS_MVIEW oferece procedimentos para atualizar (refresh) as MViews, mantendo-as sincronizadas com os dados mais recentes. O procedimento DBMS_MVIEW.REFRESH é essencial para esse propósito e pode ser usado para atualizar todas as MViews ou uma específica.
  2. Gestão de Log: O gerenciamento de log é crucial para manter a consistência dos dados nas MViews. Os logs de materialized view registram as alterações na tabela de origem, permitindo uma atualização eficiente da MView. O DBMS_MVIEW oferece a função DBMS_MVIEW.LOG para criar e gerenciar esses logs.
  3. Fast Refresh: O Oracle suporta dois métodos de atualização de MViews: Complete Refresh e Fast Refresh. O Fast Refresh é geralmente preferido, pois atualiza apenas as linhas afetadas na MView, economizando tempo e recursos. O DBMS_MVIEW possui funcionalidades específicas para suportar Fast Refresh.

Exemplos Práticos

Criando as tabelas
-- Criar tabela EMPLOYEES
CREATE TABLE EMPLOYEES (
    EMPLOYEE_ID NUMBER,
    FIRST_NAME VARCHAR2(50),
    LAST_NAME VARCHAR2(50),
    SALARY NUMBER
);

-- Inserir dados na tabela EMPLOYEES
INSERT INTO EMPLOYEES VALUES (1, 'John', 'Doe', 60000);
INSERT INTO EMPLOYEES VALUES (2, 'Jane', 'Smith', 55000);
INSERT INTO EMPLOYEES VALUES (3, 'Robert', 'Johnson', 70000);
INSERT INTO EMPLOYEES VALUES (4, 'Emily', 'Williams', 48000);
INSERT INTO EMPLOYEES VALUES (5, 'Michael', 'Davis', 62000);

-- Criar tabela SALES
CREATE TABLE SALES (
    PRODUCT_ID NUMBER,
    QUANTITY_SOLD NUMBER
);

-- Inserir dados na tabela SALES
INSERT INTO SALES VALUES (101, 50);
INSERT INTO SALES VALUES (102, 30);
INSERT INTO SALES VALUES (103, 20);
INSERT INTO SALES VALUES (104, 45);
INSERT INTO SALES VALUES (105, 60);
Criando uma Materialized View
CREATE MATERIALIZED VIEW MY_MVIEW
AS
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE SALARY > 50000;
CREATE MATERIALIZED VIEW HR.SALES_MVIEW
AS
SELECT PRODUCT_ID, SUM(QUANTITY_SOLD) AS TOTAL_SALES
FROM SALES
GROUP BY PRODUCT_ID;
Criando um Log para a MView
EXEC DBMS_MVIEW.LOG('HR.EMPLOYEES', 'MY_MVIEW');
EXEC DBMS_MVIEW.LOG('HR.PRODUCTS', 'HR.SALES_MVIEW');

Exemplo de desativação de um log para uma MView

EXEC DBMS_MVIEW.PURGE_LOG('HR.PRODUCTS', 'HR.SALES_MVIEW');
Atualizando uma MView usando Fast Refresh
EXEC DBMS_MVIEW.REFRESH('MY_MVIEW', 'F');
EXEC DBMS_MVIEW.REFRESH('HR.SALES_MVIEW', 'FAST');

Exemplo de especificação de método de Fast Refresh

EXEC DBMS_MVIEW.REFRESH('HR.PRODUCTS_MVIEW', 'FAST', 'TRUNCATE');

Conclusão

O pacote DBMS_MVIEW no Oracle 19c fornece ferramentas robustas para a manutenção e gerenciamento eficiente de Materialized Views. Ao utilizar as funcionalidades oferecidas por este pacote, os administradores de banco de dados podem otimizar o desempenho do sistema e garantir que as MViews estejam sempre atualizadas.

Espero que este artigo tenha sido útil e interessante para você.

Abs

Referências

Giovano Silva

Giovano Silva

Giovano Silva é um profissional com mais de 10 anos de experiência em tecnologias Oracle, com ênfase em PL/SQL. Ele adora escrever sobre soluções para problemas comuns enfrentados por profissionais Oracle em seu dia a dia. Seu objetivo é compartilhar conhecimento, simplificar conceitos complexos e ajudar a comunidade Oracle a crescer coletivamente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress