物化视图加DBLINK实现数据的同步_20170216

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【业务场景】需要把生产的ERP系统上面的一个表的数据抽取到另外一个报表的数据库里面,公司内部是没有ESB的平台,考虑到整个需求的紧急程度和对效率的要求,建议采用物化视图+DBLINK的方式来实现数据的同步;【环境说明】数据库的版本:11.
【业务场景】需要把生产的ERP系统上面的一个表的数据抽取到另外一个报表的数据库里面,公司内部是没有ESB的平台,考虑到整个需求的紧急程度和对效率的要求,建议采用物化视图+DBLINK的方式来实现数据的同步;

【环境说明】
数据库的版本:11.2.0.3
数据的流向:DB1为源数据库,DB2为目标数据库
源表:EMP,该表包含主键EMPNO
目标物化视图:MV_EMP

【方案思路】
1、在DB2上面创建一个连接DB1的DBLINK;
2、在EMP表上面增加物化视图日志,并在目标表创建物化视图MV_EMP;
3、创建JOB进行定时刷新;


【实践操作】

1、在db2上面添加tns文件

  1. DB1 =
  2. (DESCRIPTION =
  3. (ADDRESS_LIST =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
  5. )
  6. (CONNECT_DATA =
  7. (SERVICE_NAME = DB1)
  8. )
  9. )


2、在db2上面创建dblink
create  public database link  DB1 connect to "scott"  identified by  "tigger"  using  'DB1' ;

3、在db1上面创建物化视图日志

create materialized view log on EMP  with primary key;  
注:

对于已定义主键的表,分别执行以下 sql: create materialized view log on 表名  with primary key; 
对于未定义主键的表,分别执行以下 sql: create materialized view log on 表名  with rowid;


4、在db2上面创建物化视图,并设置刷新时间

CREATE MATERIALIZED VIEW SCOTT.MV_EMP
(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
REFRESH FAST ON DEMAND          
NEXT SYSDATE + 1/(24*60)   #每分钟刷新
WITH PRIMARY KEY                #基于PRIMARY KEY
AS
SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM scott.EMP@DB1;
【其他】

  • 创建物化视图日志的时候,会在相应的物化视图日志表,本质就是一张物理表,表名的结构如下:MLOGTABLENAMEMLOG_EMP;
  • 当有数据变更的时候,MLOG$_EMP表就会记录源表的变更记录,等目标的物化视图表刷新以后,该表的数据会被清空;
  • 当高水位太高的情况下,也是需要进行维护的;
整个方案其实用到的东西也是很简单的,物化视图和DBLINK,当这两个功能进行结合的时候,就实现了数据仓储的数据抽取的工作。创新有时候只是功能的叠加使用;




阅读(207) | 评论(0) | 转发(1) |
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
7
分享
相关文章
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
1029 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
352 1
Java一分钟之-SSL/TLS:安全套接字层与传输层安全
【6月更文挑战第2天】本文介绍了SSL/TLS协议在保护数据传输中的作用,以及Java中使用JSSE实现SSL/TLS的基础。内容涵盖SSL/TLS工作流程、版本、常见问题及解决办法。通过`SSLSocket`和`SSLServerSocket`示例展示了服务器和客户端的实现,并强调证书管理、配置检查和依赖更新的最佳实践,以确保安全的通信。
1123 4
spring boot读取resources目录下的python脚本执行
spring boot读取resources目录下的python脚本执行
1591 0
spring boot读取resources目录下的python脚本执行
零基础部署一个Django Blog到Serverless架构
本场景介绍如何将Django Blog项目部署到函数计算平台
【软件工程期末复习】知识点+大题详解(E-R图、数据流图、N-S盒图、状态图、活动图、用例图....)(下)
【软件工程期末复习】知识点+大题详解(E-R图、数据流图、N-S盒图、状态图、活动图、用例图....)
4226 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问