创建Writable Materialized View在DB之间增量同步数据
数据库之间可以通过DBLINK+Materialized View实现数据同步; 若需要对物化视图做UPDATE更新操作,则需要建立Writable Materialized View,在建立物化视图时指定FOR UPDATE子句。由于Writable Materialized View要求物化视图能够快速刷新,所以建立必要的物化视图日志Materialized View Log。
以下为创建远程可更新物化视图及其管理示例:
source 源端 SQL> conn c##maclean/oracle Connected. SQL> SQL> create table sourcet as select * from dba_objects; Table created. SQL> select count(*) from sourcet; COUNT(*) ---------- 89134 必须建立基于rowid的物化视图日志 SQL> create MATERIALIZED VIEW log on sourcet with rowid including new values; Materialized view log created. target 目标端 ,首先创建必要的DBLINK create database link remote connect to c##maclean identified by oracle using 'C12'; 创建远程物化视图,NEXT SYSDATE + 1/1440 为 每分钟刷新一次 create MATERIALIZED VIEW target refresh fast with rowid START WITH sysdate NEXT SYSDATE + 1/1440 for update as select * from sourcet@remote; SQL> select count(*) from target; COUNT(*) ---------- 89134 Writeable Materialiezd View 可以正常更新 SQL> delete target where rownum<100; 已删除99行。 SQL> commit; 提交完成。 Materialiezd View 上可以创建索引和视图 SQL> create index objd_ind on target(object_id); 索引已创建。 SQL> create view view_objd as select * from target where object_id>1000; 视图已创建。 Materialiezd View 指定了 NEXT SYSDATE + 1/1440 后会 每分钟自动刷新一次 SQL> select count(*) from target; COUNT(*) ---------- 89134 可以将Materialiezd View 修改为手动刷新 ALTER MATERIALIZED VIEW target refresh on demand; 将Materialiezd View 改为自动刷新 ALTER MATERIALIZED VIEW target refresh START WITH sysdate NEXT SYSDATE + 1/1440; 手动COMPLETE刷新 物化视图 exec dbms_mview.refresh('MVIEWA','C'); 手动FAST刷新 物化视图 exec dbms_mview.refresh('MVIEWA','F'); 重新编译 物化视图 alter MATERIALIZED VIEW target compile; |
posted on 2013-03-19 00:51 Oracle和MySQL 阅读(210) 评论(0) 编辑 收藏 举报