-
zzh 撰写了一篇新博客日志:使用DBlink及物化视图相结合方法实现跨系统间的数据同步 2 年, 11 月 之前 · 查看
在项目实施过程中,经常会遇到系统间需要进行数据交互的情况,往往需要根据用户实际IT架构所允许的集成手段完成流程集成工作,下面就以我在哈尔滨惠天力BPM项目来介绍如何解决不同系统间的数据交互问题。 背景 在我们对哈尔滨惠天力项目实施过程中,客户要求我们的BPM系统能和他们已有的ERP进行数据交互,两个系统用的都是ORACLE数据库,两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,根据架构背景和集成度,我们评估并使用了Oracle DBlink技术。 整体实施思路 首先创建一个dblink,可以访问远程数据库. 在本地创建一个物化视图,存储远程数据表,当远程数据表有变化时,会反应到物化视图中. 在触发器中写同步数据的代码. 具体实施 首先,编写一个从BPM访问ERP的DBlink,参考如下: 建DBlink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。 在目的数据库上创建DBlink:
create public database link oa_to_prod connect to apps using ‘(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=ebsprod.huijiabei.com)(PORT=1521)) (CONNECT_DATA= (SID=PROD) ))’;
其中HOST,PORT,SID是需要被访问的数据库的ip地址,端口及ssid。 接下来就要将利用物化视图将基础数据同步到BPM中。 Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。在惠天力项目中就用到了物化视图来保存使用DBlink从ERP中查询过来的数据,代码如下: –在BPM创建MV
CREATE MATERIALIZED VIEW cux_flex_value_mv REFRESH FAST ON DEMAND WITH ROWID //按照指定方式刷新 START WITH SYSDATE NEXT SYSDATE + 30/24*60*60 –oracle自动在30钞后进行第一次完全刷新,以后每隔1天完全刷新一次 AS SELECT ffv.* FROM APPLSYS.fnd_flex_values@oa_to_prod ffv;
REFRESH是刷新方法 [...]
炎黄盈动官方微博