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;
    查询结果如下
    由上图可见,源端物化视图日志在刷新后日志内容清空
  • 相关阅读:
    Clojure实现的简单短网址服务(Compojure、Ring、Korma库演示样例)
    android4.4系统解决“ERRORcouldn't find native method”方法
    JS window.open()属性
    网页视频播放器代码大全 + 21个为您的站点和博客提供的免费视频播放器
    理解Java的GC日志
    图像识别技术
    堆排序原理及算法实现(最大堆)
    什么是依赖注入
    Cocos2d-x3.1下实现相似iOS页面滑动指示圆点
    [Bootstrap] 6. Navigation
  • 原文地址:https://www.cnblogs.com/autopenguin/p/6289472.html
Copyright © 2011-2022 走看看