关闭

不同Oracle数据库之间的数据同步

标签: oracledblinkdataguardgodengate同步
5182人阅读 评论(1) 收藏 举报
分类:

方法一:通过快照来实现

1 创建dblink 2 创建快照


Oracle快照原理及实现总结
Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。对于中大型数据库,业务数据库里所有的数据同步到另外一个处理服务器上最佳的选择还是使用SnapShot方式,即快照的方式。

Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中。
以下是我建立的Snapshot,目的是从业务数据库上将数据Copy到处理数据库上,是不同的两个服务器之间对数据copy。
第一步:在处理服务器上的Oracle终端,建立database link,业务数据库服务器SID为TEST
create database link TEST_DBLINK.US.ORACLE.COM
connect to AMICOS identified by AMICOS
using 'test';
第二步:在业务数据库上对应的表建立快照日志
Create snapshot log on A_Table;
第三步:建立Snapshot 快照名称为:Test_SnapShot
Create snapshot Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
as select * from A_Table@TEST_DBLINK
说明:REFRESH是刷新方法
刷新方式有:COMPLETE和FAST两种,而START WITH是说明开始执行的时间。
Next是下次执行的时间
而AS以后是构成快照的查询方法。
相关的方法:
更改快照
ALTER SNAPSHOT Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;
手动刷新快照 在命令界面执行:
EXEC DBMS_SNAPSHOT.REFRESH('Test_SnapShot ','C');
第一个参数是要刷新的快照名
第二个参数是刷新的方式,F----FAST, C---COMPLETE
查看快照最后刷新的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES;
最后非常的方案:
1:为需要做Snapshot的表建立Snapshot日志
create snapshot log on t1 with rowid; 这里使用ROWID建立日记的参数
2:采用Fast的方式建立快照,使用rowid做为参考参数
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
最好能按照rowid来建立快照。要不然就必须要为表建立Primary Key。

方法二:通过dataguard来实现

全库同步,并且备库不能进行操作


DataGurd:

主要备库的方式,就是数据库对数据库的备份方式,主要是解决容灾的。

流复制:

主要是利用ORACLE的归档日志,进行增量备份来实现的,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml。可以复制到表,用户,数据库级别。

高级复制:

主要是基于触发器的原理来触发数据同步的,因此,高级复制无法实现用户,数据库级别的对象复制,只能做些表、索引和存储过程的复制。

如果出于容灾整个数据库的考虑,高级复制相当复杂,而且并不一定能做好,流复制的配置相对简单。流复制是后来产生的复制技术,是基于日志挖掘技术实现的,对数据库的影响较低。但在稳定性方面较差,实时性没有高级复制强(因为高级复制是基于触发器的)。如果系统意外的话,流复制的恢复将会需要较长时间,特别是意外时间越长,恢复时间成倍增长。
从ORACLE9i开始,Oracle standby database改成DATA GUARD,在这种模式中,开始支持三种不同的数据保护模式,并开始采用LGWR 对数据的传送而不是以往的ARCH,而且增加了一个新的后台进程叫DMON 监控数据的同步,在11g之前最多支持9个节点的同时复制,从Oracle 9.2.0开始,开始支持逻辑standby。
11g能够支持多少备库,通过下面的sql你就能知道了:
SQL> show parameter log_archive_dest
Data guard是软件级别的冗余,不需要额外购买任何组件,因此能在对主数据库影响很小的情况下,实现主备数据库的同步,而主备机的数据差异只在在线日志部分,所以被不少企业作为了数据容灾方案。到了oracle 11g版本,备库可以直接已read only方式打开。 这样可以做一些查询工作,减轻出库的压力。
使用Data Guard技术有如下好处:
(1)DG是一种有效的disaster recovery 和high availability的解决方案。 可以很容易的在主库和备库之间进行switchover 和 failover的切换。 如果主库出现特殊情况,也能将停机时间降到最小。
(2)在最大保护的级别下,可以做到零数据丢失的保护,即使是一些不可预知的灾难。 并且standby 数据库也可以提供一种预防data corruption 和用户误操作的安全保护。
(3)DG 提供了3种级别的保护:maximum protection,maximum availability,maximum performance。 用户可以根据数据保护级别的需要和性能需求综合考虑选择对应的模式。
(4)如果主库和备份之间的的连接通信中断,比如网络故障,那么主库的归档日志就不能传送到备库。 一旦主备库之间通信重新连接,那么这些丢失的归档文件就是GAP。 DG 会自动检测GAP,如果发现有GAP,会自动把这些丢失的归档传送到备库,实现主备库的同步,这一切操作都不需要DBA的参与,自动实现。
(5)当启用fast-start failover后,如果primary 出现故障,那么DG broker会自动把standby 转换成primary。这个过程自动实现,无需要DBA 干预。

(6)Data Guard broker技术提供了一个用户图形界面和命令界面来自动管理和配置DG

方法三:通过godengate来实现

1 两个数据库同时安装godengate软件 2 配置参数


Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者archive log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。
利用捕捉进程(Capture Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate TDM自定义的中间格式存放在队列文件中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制;
目标系统接受数据变化并缓存到GoldenGate TDM队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据;
GoldenGate TDM投递进程从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。
由此可见,GoldenGate TDM是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate TDM将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,GoldenGate TDM可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的
GoldenGate TDM提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构.
GoldenGate TDM 可以提供可靠的数据复制,主要体现在下面三点:
保证事务一致性
GoldenGate TDM 在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序相同,并且按照相同的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。
检查点机制保障数据无丢失
GoldenGate TDM的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate TDM进程故障重启后数据无丢失。
可靠的数据传输机制
GoldenGate TDM 用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位加密和数据压缩功能。
GoldenGate TDM 可以提供可靠的数据复制,主要体现在下面三点:
保证事务一致性
GoldenGate TDM 在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序相同,并且按照相同的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。
检查点机制保障数据无丢失
GoldenGate TDM的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate TDM进程故障重启后数据无丢失。
可靠的数据传输机制
GoldenGate TDM 用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位加密和数据压缩功能。
Oracle 公司的GoldenGate产品,可以在异构的IT基础结构之间实现大量数据的秒一级的数据捕捉、转换和投递。GoldenGate可以支持几乎所有常用操作系统如和数据库平台.
但是成本相对上面来说比较高,具体的第二和第三种方法的配置等百度上太多就不赘述了.
1
0
查看评论

利用DBLink+JOB实现两个Oracle数据库之间的数据同步

针对上一篇文章的部分内容这里通过DBLink+JOB实现两个Oracle数据库之间的数据同步,我自己测试了两个数据库之间的一个表同步没有问题,下面写个详细例子供大家参考;网络爬虫太多,加个地址:http://blog.csdn.net/qq_22260641 第一步:建立DBLink  ...
  • qq_22260641
  • qq_22260641
  • 2017-04-21 12:35
  • 4116

Oracle 11G 数据库 DATA GUARD主从同步配置详解

Oracle数据库主从同步配置详解1. 安装前准备 1.1.软件 1、数据库软件:Oracle 11g r1 (企业版) 2、操作系统:WINDOWS SERVER 2008 ENTERPRISE EDTION 64X 1.2.环境 主库主机: dbprimary 192.168....
  • chengxumengzhidui
  • chengxumengzhidui
  • 2017-09-13 08:48
  • 1743

oracle 一种简单的数据同步方式

在两个应用系统之间
  • jrn1012
  • jrn1012
  • 2014-08-18 17:34
  • 3923

浅谈Oracle 数据库之间数据同步方案

随着信息技术的飞速发展,企业信息化建设的不断深入,使得企业业务系统数量不断增加。这时,各业务系统之间数据交互,各子业务系统与核心业务系统之间数据交互,诸如此类场景的应用需求不断出现。因此,IT部门应对此类需求的压力越来越大。比较突出的问题,主要有实时性与性能的冲突,数据交互方案的安全性与健壮性等。下...
  • leamonjxl
  • leamonjxl
  • 2011-08-17 16:46
  • 17254

Oracle数据同步

温习一下Oracle中常说的HA、RAC、Datagurad的区别 简单的说 rac侧重于负载均衡 dg侧重于容灾  datagourd 双机侧重于业务的自动接管 关键看你的应用要求是什么样的 来进行选择~   RAC是多节点,每个节点一个INSTANCE,是保证应...
  • hblzq
  • hblzq
  • 2012-03-26 11:52
  • 5921

如何实现两个Oracle数据库的数据同步?

为方便完成指定数据表的同步操作,可以采用dblink与merge结合的方法完成。 操作环境: 此数据库服务器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下: ...
  • tonghuaxl
  • tonghuaxl
  • 2018-01-31 14:14
  • 41

不同Oracle数据库之间的数据同步

方法一:通过快照来实现 1 创建dblink 2 创建快照 Oracle快照原理及实现总结 Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。对于中大型数据库,业务数据库里所有的数据同步到另外一个处理服务器上最佳的选择还是使用SnapShot...
  • qq_22260641
  • qq_22260641
  • 2017-04-19 15:09
  • 5182

oracle数据库同步技术

参考网上的资料,根据个人的要求,整理了一份。方便以后查阅。oracle数据库同步技术高级复制  什么是复制?简单地说复制就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数  据的过程。  高级复制,是在组成分布式数据库系统的多个数据库中复制和维护...
  • wjc1000
  • wjc1000
  • 2010-12-28 16:36
  • 2641

利用DBLink+JOB实现两个Oracle数据库之间的数据同步

这里通过DBLink+JOB实现两个Oracle数据库之间的数据同步,我自己测试了两个数据库之间的一个表同步没有问题,下面写个详细例子供大家参考; 第一步:建立DBLink   两个数据库,源数据库test中的表数据同步到目标数据库scott的同一个表(表不相同也可以,不影响的),在P...
  • u013310119
  • u013310119
  • 2017-08-03 14:29
  • 1056

oracle表数据同步 merge语法

简介 MERGE语句是SQL语句的一种。在SQL Server、Oracle数据库中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表(原数据表,source table)或子查询的...
  • java_niuniu1016
  • java_niuniu1016
  • 2016-12-16 09:44
  • 614
    个人资料
    • 访问:74488次
    • 积分:1457
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:3篇
    • 译文:5篇
    • 评论:15条
    欢迎关注


    博客专栏
    技术交流和分享
    工作邮箱:humf@vip.qq.com
    技术分享和交流QQ群:432135803
    微信公众号
    微信公众号
    分享到: 微信 更多
    2