利用db_link创建物化视图数据同步到数据仓库

2014-11-24 18:59:05 · 作者: · 浏览: 13

现在需要把生产数据库中的部分数据同步到数据仓库中,考虑到成本和便捷性,采用定期刷新物化视图的方式同步数据。




l 首先创建一个dblink,可以访问远程数据库


l 在本地创建一个物化视图,存储远程数据表,当远程数据表有变化时,会定时刷新到物化视图中。







测试:


[oracle@testrac1 goldengate]$ sqlplus sys/sys@ testrac as sysdba


SQL> select count(*) from SYS.GV_$INSTANCE




语法:


create public database link dblink_nameconnect to username identified by passwd using 'tns_name'


说明:


dblink_name :是dblink名称


username:是远端的用户名


passwd:是远端的秘密


'tns_name' :是tnsnames.ora中的连接字符串名称



示例如下:







说明:


对于已定义主键的表,分别执行以下 sql:


create materialized view log on 表名 withprimary key;


对于未定义主键的表,分别执行以下 sql:


creatematerialized view log on 表名 with rowid;


使用sql语句:


select 'creatematerialized view log on '||table_name||' withprimary key;' fromuser_tables;


创建物化视图语法如下:


create materialized view [view_name]


refresh [fast|complete|force] with [primaryid | rowid]


[


on [commit|demand] |


start with (start_time) next (next_time)


]


as


{创建物化视图用的查询语句}



使用sql语句:


select 'create materializedview '||table_name||' refresh fast on demand as select * fromthh@testrac;' fromuser_tables;





定时任务放在每天凌晨3点执行任务。