Oracle-11g 中两库间物化视图的同步

html,body { font-size: 15px }
body { font-family: Helvetica, "Hiragino Sans GB", "微软雅黑", "Microsoft YaHei UI", SimSun, SimHei, arial, sans-serif; line-height: 1.6; margin: 0; padding: 1.33rem 1rem }
h1,h2,h3,h4,h5,h6 { margin: 1.33rem 0 0.667rem; padding: 0; font-weight: bold }
h1 { font-size: 1.4rem }
h2 { font-size: 1.33rem }
h3 { font-size: 1.2rem }
h4 { font-size: 1.13rem }
h5 { font-size: 1rem }
h6 { font-size: 1rem; color: #777777; margin: 1rem 0 }
div,p,ul,ol,dl,li { margin: 0 }
blockquote,table,pre,code { margin: 8px 0 }
ul,ol { padding-left: 2.13rem }
blockquote { padding: 0 0.8rem }
blockquote>:first-child { margin-top: 0 }
blockquote>:last-child { margin-bottom: 0 }
img { border: 0; max-width: 100%; height: auto !important; margin: 2px 0 }
table { border-collapse: collapse; border: 1px solid #bbbbbb }
td,th { padding: 4px 8px; border-collapse: collapse; border: 1px solid #bbbbbb }
html,body { font-size: 15px }
body { font-family: Arial, Helvetica, "Hiragino Sans GB", 微软雅黑, "Microsoft YaHei UI", SimSun, SimHei, arial, sans-serif; line-height: 1.5; color: ; background-color: ; margin: 0; padding: 1.33rem 1rem }
img { max-width: 100% }
html { height: 100% }
body { min-height: 100% }
.wiz-img-resize-handle { position: absolute; z-index: 1000; border: 1px solid black; background-color: white }
.wiz-img-resize-handle { width: 5px; height: 5px }
.wiz-img-resize-handle.lt { cursor: nw-resize }
.wiz-img-resize-handle.tm { cursor: n-resize }
.wiz-img-resize-handle.rt { cursor: ne-resize }
.wiz-img-resize-handle.lm { cursor: w-resize }
.wiz-img-resize-handle.rm { cursor: e-resize }
.wiz-img-resize-handle.lb { cursor: sw-resize }
.wiz-img-resize-handle.bm { cursor: s-resize }
.wiz-img-resize-handle.rb { cursor: se-resize }
.wiz-table-body.wiz-table-moving *,.wiz-table-body.wiz-table-moving *::before,.wiz-table-body.wiz-table-moving *::after { cursor: default !important }
td,th { position: relative }
#wiz-table-range-border { display: none; width: 0; height: 0; position: absolute; top: 0; left: 0; z-index: 105 }
#wiz-table-col-line,#wiz-table-row-line { display: none; background-color: #448aff; position: absolute; z-index: 120 }
#wiz-table-col-line { width: 1px; cursor: col-resize }
#wiz-table-row-line { height: 1px; cursor: row-resize }
#wiz-table-range-border_start,#wiz-table-range-border_range { display: none; width: 0; height: 0; position: absolute }
#wiz-table-range-border_start_top,#wiz-table-range-border_range_top { height: 2px; background-color: #448aff; position: absolute; top: 0; left: 0 }
#wiz-table-range-border_range_top { height: 1px }
#wiz-table-range-border_start_right,#wiz-table-range-border_range_right { width: 2px; background-color: #448aff; position: absolute; top: 0 }
#wiz-table-range-border_range_right { width: 1px }
#wiz-table-range-border_start_bottom,#wiz-table-range-border_range_bottom { height: 2px; background-color: #448aff; position: absolute; top: 0 }
#wiz-table-range-border_range_bottom { height: 1px }
#wiz-table-range-border_start_left,#wiz-table-range-border_range_left { width: 2px; background-color: #448aff; position: absolute; top: 0; left: 0 }
#wiz-table-range-border_range_left { width: 1px }
#wiz-table-range-border_start_dot,#wiz-table-range-border_range_dot { width: 5px; height: 5px; border: 2px solid rgb(255, 255, 255); background-color: #448aff; cursor: crosshair; position: absolute; z-index: 110 }
.wiz-table-tools { display: block; background-color: #fff; position: absolute; left: 0px; border: 1px solid #ddd; z-index: 130 }
.wiz-table-tools ul { list-style: none; padding: 0 }
.wiz-table-tools .wiz-table-menu-item { position: relative; float: left; margin: 5px 2px 5px 8px }
.wiz-table-tools .wiz-table-menu-item .wiz-table-menu-button { font-size: 15px; width: 20px; height: 20px; line-height: 20px; cursor: pointer; position: relative }
.wiz-table-tools i.editor-icon { font-size: 15px; color: #455a64 }
.wiz-table-tools .wiz-table-menu-item .wiz-table-menu-button i#wiz-menu-bg-demo { position: absolute; top: 1px; left: 0 }
.wiz-table-tools .wiz-table-menu-sub { position: absolute; display: none; width: 125px; padding: 5px 0; background: #fff; border: 1px solid #E0E0E0; top: 28px; left: -9px }
.wiz-table-tools .wiz-table-menu-sub>div { font-size: 15px }
.wiz-table-tools .wiz-table-menu-item.active .wiz-table-menu-sub { display: block }
.wiz-table-tools .wiz-table-menu-sub::before,.wiz-table-tools .wiz-table-menu-sub::after { position: absolute; content: " "; border-style: solid; border-color: transparent; border-bottom-color: #cccccc; left: 22px; margin-left: -14px; top: -8px; border-width: 0 8px 8px 8px; z-index: 10 }
.wiz-table-tools .wiz-table-menu-sub::after { border-bottom-color: #ffffff; top: -7px }
.wiz-table-tools .wiz-table-menu-sub-item { padding: 4px 12px; font-size: 14px }
.wiz-table-tools .wiz-table-menu-sub-item.split { border-top: 1px solid #E0E0E0 }
.wiz-table-tools .wiz-table-menu-sub-item:hover { background-color: #ececec }
.wiz-table-tools .wiz-table-menu-sub-item.disabled { color: #bbbbbb; cursor: default }
.wiz-table-tools .wiz-table-menu-sub-item.disabled:hover { background-color: transparent }
.wiz-table-tools .wiz-table-menu-item.wiz-table-cell-bg:hover .wiz-table-color-pad { display: block }
.wiz-table-tools .wiz-table-color-pad { display: none; padding: 10px; width: 85px; height: 88px; background-color: #fff; cursor: default }
.wiz-table-tools .wiz-table-color-pad>div { font-size: 15px }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item { display: inline-block; width: 15px; height: 15px; margin-right: 9px; position: relative }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item i.pad-demo { position: absolute; top: 3px; left: 0 }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item .icon-oblique_line { color: #cc0000 }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item:last-child { margin-right: 0 }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item.active i.editor-icon.icon-box { color: #448aff }
.wiz-table-tools .wiz-table-cell-align { display: none; padding: 10px; width: 85px; height: 65px; background-color: #fff; cursor: default }
.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item { display: inline-block; width: 15px; height: 15px; margin-right: 9px; position: relative }
.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item:last-child { margin-right: 0 }
.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item i.valign { position: absolute; top: 3px; left: 0; color: #d2d2d2 }
.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.valign { color: #a1c4ff }
.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.icon-box,.wiz-table-tools .wiz-table-cell-align-item.active i.editor-icon.align { color: #448aff }
.wiz-table-tools .wiz-table-color-pad .wiz-table-color-pad-item:last-child,.wiz-table-tools .wiz-table-cell-align .wiz-table-cell-align-item:last-child { margin-right: 0 }
th.wiz-selected-cell-multi,td.wiz-selected-cell-multi { background: rgba(0,102,255,.05) }
th::before,td::before,#wiz-table-col-line::before,#wiz-table-range-border_start_right::before,#wiz-table-range-border_range_right::before { content: " "; position: absolute; top: 0; bottom: 0; right: -5px; width: 9px; cursor: col-resize; background: transparent; z-index: 100 }
th::after,td::after,#wiz-table-row-line::before,#wiz-table-range-border_start_bottom::before,#wiz-table-range-border_range_bottom::before { content: " "; position: absolute; left: 0; right: 0; bottom: -5px; height: 9px; cursor: row-resize; background: transparent; z-index: 100 }
.wiz-table-container { }
.wiz-table-body { position: relative; padding: 0 0 10px }
.wiz-table-body table { margin: 0; outline: none }
td,th { height: 28px; outline: none }
body pre.prettyprint { padding: 0 }
body pre.prettyprint code { white-space: pre }
body pre.prettyprint.linenums { overflow: auto }
body pre.prettyprint.linenums ol.linenums { padding: 10px 10px 10px 40px !important }

运行环境

 
 
 
 
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;
查询结果如下
Oracle-11g 中两库间物化视图的同步
Oracle-11g 中两库间物化视图的同步
由上图可见,表 TB_MV_TEST1 的物化视图日志名称为 MLOG$_TB_MV_TEST1,表 TB_MV_TEST2 并无物化视图日志。
3.查看物化视图日志内容(源端)
SQL> SELECT * FROM MLOG$_TB_MV_TEST1;
查询结果如下
Oracle-11g 中两库间物化视图的同步
Oracle-11g 中两库间物化视图的同步
可见新增数据已记录于物化视图日志。
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
查询结果如下
Oracle-11g 中两库间物化视图的同步
由上图可见 MV_TEST1 采用 FAST 方式刷新,MV_TEST2 采用 COMPLETE 方式刷新。
6.查看物化视图日志内容(源端)
SQL> SELECT * FROM MLOG$_TB_MV_TEST1;
查询结果如下
Oracle-11g 中两库间物化视图的同步
Oracle-11g 中两库间物化视图的同步
由上图可见,源端物化视图日志在刷新后日志内容清空
上一篇:swig模板 html代码自然状态下输出是转义的,必须加一个函数来转换为html代码;


下一篇:webservice-整理