zoukankan      html  css  js  c++  java
  • Oracle-11g 中两库间物化视图的同步

    运行环境

    1.目标端数据库
    (1).数据库版本:Oralce-11.2.0.3
    (2).IP 地址:11.6.76.222~223
    2.源端数据库
    (1).数据库版本:Oralce-11.2.0.4
    (2).IP 地址:192.168.87.221~222
     
    物化视图同步说明
    在源端数据库创建表 TB_MV_TEST1 以及 TB_MV_TEST2,目标端将建立查询以上两表的物化视图,并分别采用增量及全量的方式进行同步。
     
    配置步骤
    1.创建测试表(源端)
    SQL> CREATE TABLE TB_MV_TEST1  (pkid number, msg varchar2(32));
    ALTER TABLE TB_MV_TEST1 ADD CONSTRAINT pk_tb_mv_test1 PRIMARY KEY (pkid);
    SQL> CREATE TABLE TB_MV_TEST2  (pkid number, msg varchar2(32));
    ALTER TABLE TB_MV_TEST2 ADD CONSTRAINT pk_tb_mv_test2 PRIMARY KEY (pkid);
    2.创建物化视图日志(源端)
    由于 TB_MV_TEST1 欲采用增量同步方式,所以对其创建物化视图日志。
    SQL> CREATE MATERIALIZED VIEW LOG ON tb_mv_test1;
    注意默认情况下将以 with primary key 方式存储物化视图日志。
    3.创建 DB LINK(目标端)
    SQL> CREATE DATABASE LINK db_test CONNECT TO adm_zsz IDENTIFIED BY "password" USING 'foctestora';
    4.创建物化视图(目标端)
    SQL> CREATE MATERIALIZED VIEW mv_test1 REFRESH FORCE ON DEMAND WITH PRIMARY KEY AS SELECT * FROM tb_mv_test1@db_test;
    SQL> CREATE MATERIALIZED VIEW mv_test2 REFRESH FORCE ON DEMAND WITH PRIMARY KEY AS SELECT * FROM tb_mv_test2@db_test;
    5.刷新物化视图(目标端)
    SQL> exec dbms_mview.refresh('MV_test1');
    SQL> exec dbms_mview.refresh('MV_test2');
    注意:因为刷新方式为 FORCE,所以将先尝试使用 FAST 方式刷新物化视图,倘若不符合 FAST 刷新的条件,则采用 COMPLETE 方式刷新。
     
    刷新方式验证
    1.新增 MASTER TABLE 数据(源端)
    SQL> insert into tb_mv_test1 values (5,'FIVE');
    SQL> insert into tb_mv_test2 values (5,'FIVE');
    2.查看物化视图日志信息(源端)
    SQL> SELECT log_owner, master, log_table, primary_key, last_purge_date,last_purge_status 
    FROM user_mview_logs;
    查询结果如下
    由上图可见,表 TB_MV_TEST1 的物化视图日志名称为 MLOG$_TB_MV_TEST1,表 TB_MV_TEST2 并无物化视图日志。
    3.查看物化视图日志内容(源端)
    SQL> SELECT * FROM MLOG$_TB_MV_TEST1;
    查询结果如下
    可见新增数据已记录于物化视图日志。
    4.刷新物化视图(目标端)
    SQL> exec dbms_mview.refresh('MV_test1');
    SQL> exec dbms_mview.refresh('MV_test2');
    5.查看物化视图刷新方式(目标端)
    SQL> SELECT owner, mview_name, last_refresh_type, last_refresh_date, staleness
    FROM dba_mviews
    查询结果如下
    由上图可见 MV_TEST1 采用 FAST 方式刷新,MV_TEST2 采用 COMPLETE 方式刷新。
    6.查看物化视图日志内容(源端)
    SQL> SELECT * FROM MLOG$_TB_MV_TEST1;
    查询结果如下
    由上图可见,源端物化视图日志在刷新后日志内容清空
  • 相关阅读:
    如何搭建Redis集群
    AOP的作用
    IDEA上传代码到GitGub
    Runnable的作用及使用方式
    idea如何自动生成序列化ID?
    15000 字的 SQL 语句大全
    图解算法时间复杂度
    图解JVM的类加载机制(详细版)
    (转)图解排序算法之归并排序
    图解分布式id生成算法SnowFlake
  • 原文地址:https://www.cnblogs.com/autopenguin/p/6289472.html
Copyright © 2011-2022 走看看