温习一下Oracle中常说的HA、RAC、Datagurad的区别

简单的说
rac侧重于负载均衡
dg侧重于容灾  datagourd
双机侧重于业务的自动接管
关键看你的应用要求是什么样的 来进行选择~

RAC是多节点,每个节点一个INSTANCE,是保证应用的,只要有一个节点是正常运行的,就能连接到数据库
DG实际上是数据库的备份
RAC 是 N个instance , 一个database(datafiles)
Dataguard是多份datafiles

oracle数据库同步

在两台oracle数据库之间测试成功,下面就总结一下吧:

需求:

现有两台oracle数据库服务器A和B(A,B可以是在同一内网,也可以是在互联网上的两台独立机器)。A和B里有都有testable表,结构一样,现需要当A库中的testable表变化时,B库里的testable也相应变化数据

我的解决方案:

在A中建立到B库的链接,然后对要同步的表做一个同义synonym,最后建一个触发器,就可以完成了。当然,你所用的当前的用户要有相应的权限去执行这些操作。

当从A向B同步数据时,应该在A上做所有的设置:

1,为保证连接到另一台远程服务器的数据库,你需要建立一个DB Link,但是,这里要注意语法格式,using +"connect string",这个connect string应该是存在于oracle服务器的TNSNAMES.ORA文件里,监听程序将从这里获取远方服务器

的ip地址等信息,我定义了一个'251'的connect string如下:

251 = 
(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.251)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = mychoice)

)

)
 
把它存到你的TNSNAMES.ORA文件里。 
2,然后就可以定义DB Link了:

create public database link TEST2.US.ORACLE.COM 
connect to 用户名

identified by "密码"

using '251';

3,建立synonym(同义)

create or replace synonym TEST01

for MYCHOICE.TESTABLE@TEST2.US.ORACLE.COM;

建立完了以后,你可以通过:

select * from test01

上面的语句相当于在B服务器上执行:

select * from testable 

4,封建触发器:

当A中的testable表变化时(这里只考虑插入操作),就会触发向远程的B库的testable也插入相应的数据:

create or replace trigger rtest 
after insert on testable

for each row

begin

insert into test01 (something) values (:new.something);

end;

ok,现在我们可以测试一下,你在A库中往testable表中插入一条记录,看看B库中是不是也相应的增加了

//

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件。第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。下面对这些技术逐一进行介绍。

一、DataGuard数据同步技术

DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。DataGuard提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。

最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的数据保护等级。在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。

最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交。这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。这也是目前市场上唯一的一种可确保数据零丢失的数据同步解决方案。

最大可用模式:这种模式在不牺牲源数据库可用性的条件下提供了尽可能高的数据保护等级。与最大保护模式一样,日志数据需同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交,与最大保护模式不同的是,如果日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库不会被关闭,而是运行在最大性能模式下,待故障解决并将延迟的日志成功应用在目标库上以后,源数据库将会自动回到最大可用模式下。

根据在目标库上日志应用(Log Apply)方式的不同,DataGuard可分为Physical Standby(Redo Apply)和Logical Standby(SQL Apply)两种。

Physical Standby数据库,在这种方式下,目标库通过介质恢复的方式保持与源数据库同步,这种方式支持任何类型的数据对象和数据类型,一些对数据库物理结构的操作如数据文件的添加,删除等也可支持。如果需要,Physical Standby数据库可以只读方式打开,用于报表查询、数据校验等操作,待这些操作完成后再将数据库置于日志应用模式下。

Logical Standby数据库,在这种方式下,目标库处于打开状态,通过LogMiner挖掘从源数据库传输过来的日志,构造成SQL语句,然后在目标库上执行这些SQL,使之与源数据库保持同步。由于数据库处于打开状态,因此可以在SQL Apply更新数据库的同时将原来在源数据库上执行的一些查询、报表等操作放到目标库上来执行,以减轻源数据库的压力,提高其性能。

DataGuard数据同步技术有以下优势:

1) Oracle数据库自身内置的功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不需要另外付费;

2) 配置管理较简单,不需要熟悉其他第三方的软件产品;

3) Physical Standby数据库支持任何类型的数据对象和数据类型;

4) Logical Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作;

5) 在最大保护模式下,可确保数据的零丢失;

DataGuard数据同步技术的劣势体现在以下几个方面:

1) 由于传输整个日志文件,因此需要较高的网络传输带宽;

2) Physical Standby数据库虽然可以只读方式打开,然后做些查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,将延长切换的时间;

3) Logical Standby数据库不能支持某些特定的数据对象和数据类型;

4) 不支持一对多复制,不支持双向复制,因此无法应用于信息集成的场合;

5) 只能复制整个数据库,不能选择某个schema或表空间进行单独复制;

6) 不支持异构的系统环境,需要相同的操作系统版本和数据库版本;

DataGuard技术是Oracle推荐的用于高可用灾难恢复环境的数据同步技术。

HA是High Availability 的首字母组合,翻译过来,可以叫做高可用,或高可用性,高可用(环境)。我觉得应该说HA是一个观念而不是一项或一系列具体技术,就象网格一样。作过系统方案就知道了,评价系统的性能当中就有一项高可用。广义的高可用涉及到系统的各个方面,简单来说,让系统不会中断 运行,就是高可用。包括软件的高可用,硬件的高可用,网络的高可用等等。具体实现的方案包括操作系统的集群,数据库的集群,硬件的冗余,网络的冗余等等。做HA方面的软件,有IBM的HACMP(很多常用AIX的人,常说的HA就指HACMP,乱啊)、SUN的Sun Cluster、HP的MC/SG等。

在2000年以前,大家谈HA,大部分时候说的是操作系统一级的双机热备,主流产品当时有IBM HACMP4.1,HP的MC/SG啥版本忘了,sun的系统很多人不用VCS,用的是一个叫dataware的东西。现在很多人眼中的HA也还是这样。时至今日,HA包括的东西可就多了,先不说其他方面,单就数据库,单就Oracle,与HA相关的产品先后有:高级复制(AdvanceRepication)、OPS/RAC(Real Application Cluster)、数据卫士(Data Guard)、oracle流(Oracle Streams)、分区(Oracle Partition)这样数款产品。照这么说,RAC只是HA这个概念下的一个具体产品而已!目前为止,只有RAC和分区是Oracle要收取licence的,其他的,只要给经验丰富的第三方实施方付一定的规划/设计及部署费用就可以了;当然,也可以自己照着文档依葫芦画瓢,但是这样弄出的环境是否能达到高可用就难说了。事实上,大部分人所说的HA,还是狭义上的HA,也就是OS一级的双机热备。

RAC是real application cluster的简称,它是在多个主机上运行一个数据库的技术,即是一个db多个instance。它的好处是 可以由多个性能较差的机器构建出一个整体性能很好的集群,并且实现了负载均衡,那么当一个节点出现故障时,其上的服务会自动转到另外的节点去执行,用户甚 至感觉不到什么。

双机热备(HA)和RAC有啥区别呢?

1、对于硬件来说,基本上一样,共享存储、光纤线(也有还用SCSI线的)、多台小型机(可以做多节点的相互热备,也可以做多节点的RAC)、光纤交换机(如果是用光纤卡的话);但做RAC,在主机之间,最好使用高带宽网络交换机(虽然不用也可以做成);因此硬件成本相差不大。
2、软件呢,差别可不小。如果是双机热备,必须买操作系统级的双机管理软件;如果是RAC,目前还是建议购买双机管理软件(尽管10g的crs+asm可以摆脱双机软件了,但ASM目前实在太难伺候了),当然还得买RAC license。
3、日常维护。RAC要求的技术含量更高,也应该更勤快。最关键的是得买oracle服务,否则遇到有些问题(bug),你就比单机还不高可用了。
4、优缺点。这个,看看RAC的官方论述吧。如果能用好,确实是很有好处的。目前我们的40多个客户的使用情况来看,RAC确实大大降低了他们的downtime,另一方面可以说就是提高了生产力咯。

Dataguard一般是出于容灾的目的。是主数据库的备用库(standby 库)通过自动传送和接受archivelog,并且在dataguard库自动apply 这些log,从而达到和主数据库同步的目的,可能dataguard 库是建立的异地的,当主库所在的区域出现了致命性的灾难时(火灾、地震等),主库没法修复时,这时可以切换dataguard 为主库的模式,对外提供服务,而它的数据基本是当前最新的。目前可能大家对于 dataguard 库的使用已经拓展出了其他更多的用途,比如备份,跑报表等等。

Oracle数据同步相关推荐

  1. 基于OGG Datahub插件将Oracle数据同步上云

    摘要:随着数据规模的不断扩大,传统的RDBMS难以满足OLAP的需求,本文将介绍如何将Oracle的数据实时同步到阿里云的大数据处理平台当中,并利用大数据工具对数据进行分析. 一.背景介绍 随着数据规 ...

  2. SQL 与oracle数据同步之 链接服务器

    很多时候,大一些的单位都有好几个系统,而这几个系统可能来自己不同的厂商,它们采用的开发技术可能很不一样,底层数据库也很能 有可能是 出于不同的平台,这就造成了同一个企业而在信息数据方面不"同 ...

  3. (进阶篇_01)Oracle数据同步3种场景

    文章目录 一.场景分析 二.实战 2.1. 创建原表表结构+初始化数据 2.2. 创建目标表表结构 2.3. 同步前效果图 2.4. 连接串 2.5. 执行同步 2.6.执行后效果图 2.7.操作记录 ...

  4. Oracle数据同步接口,增量数据从ERP系统到本地临时表封装解决方案

    项目的许多基础数据需要从ERP系统中同步基础数据,例如:物料.客户.供应商.仓库等等. 之前做过一次比较死板的标准流程: 1.通过JDBC取ERP系统的增量数据; 2.解析; 3.然后用自己项目的DB ...

  5. oracle 上搭建ogg文档,ogg搭建配置实现oracle数据同步到mysql)

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 参考博客文章:https://www.jianshu.com/p/53882229b70e ? 1)根据不同的数据库 ...

  6. Oracle数据同步解决方案之databus

    [list][*][b]概述[/b][/list] 目前了解到基于Oracle的开源数据同步项目有yugong.databus.SymmetricDS,之前尝试了yugong,很容易上手.使用时需要注 ...

  7. oracle数据同步异常,案例:DataGuard同步异常问题处理记录

    本帖最后由 yuanqk 于 2018-8-11 20:28 编辑 真实案例,记录一下,都是小白,非常理解小白在遇到问题时的无奈,希望能帮助到一些人.过程非常简单,主要是处理问题的思路. 1.早上收到 ...

  8. ORACLE 数据同步时,批量进行新增和更新操作的SQL写法

    场景模拟:比如自己项目的一张EMP员工信息表,数据来源需要从第三方系统获取,随时可手动同步更新,也可以定时自动同步.一般情况下,通过创建时间或者最后更新时间,获取自上次同步后的数据增量,全部插入本地的 ...

  9. Oracle数据同步接口中,对于NUMBER、DATE类型数据,从resultSet中直接获取造成精度丢失的解决方案

    通过JDBC获取ORACLE数据库数据时,返回值统一都是ResultSet对象,就像存储过程中的游标,一行一行的读取数据.对于NUMBER和DATE类型的数据,如果java代码中直接用resultSe ...

最新文章

  1. OC基础回想(十二)协议
  2. 饿了么UI框架element的表格多个弹窗问题
  3. SpringMvc之集成Swagger
  4. 学生创客 开公司造3D打印机
  5. 安装 | Window下Visual Studio VS2015 VS2017 各版本下载地址
  6. 虚拟机Centos7配置网络
  7. 云漫圈 | 敢怼我们程序员?哼,有你好看的。。。
  8. OpenCV:H1.type() == H2.type() H1.depth() == CV_32F
  9. 跨站式SQL脚本注入的技巧介绍
  10. 如何提高PHP代码的质量?第一部分 自动化工具
  11. 从linux刷到windows,我为什么从Linux重新回归到Windows平台
  12. App工程从Eclipse迁移到Android Studio的问题总结
  13. msgpack在java和go中序列化的区别
  14. powerbuilder11的webform发布和webservices调用实践
  15. 创业计划书学习笔记二——创业计划书的目录结构与执行概览部分的写作方法
  16. 《神雕侠侣》古墓派玉女功养生修炼
  17. [百度百科]英语状语
  18. Effective C++ 条款13 以对象管理资源
  19. “一点”也不能忍 | 精准检测让屏幕缺陷无所遁形
  20. Java常见面试题(2)

热门文章

  1. BeanFactory Diagrams
  2. Uboot命令[part]
  3. python 密码学编程
  4. 镜头像差之四——像散
  5. Bespin Global:云管理市场上演老兵新传
  6. 图灵奖得主杨立昆:GPT模式五年就不会有人用了,世界模型才是AGI未来
  7. jsp/java爱心宠物诊所管理系统
  8. 老人喂养宝宝11个误区
  9. 【Y忍冬草】QT更改构建目录
  10. Python简短代码实现五子棋小游戏。。。