题目部分

在Oracle中,RAC、DG和OGG的区别有哪些?

答案部分

(一)什么是高可用?

高可用(High Availability,HA)也可以称为高可用性或高可用环境。HA是分布式系统架构设计中必须考虑的因素之一。HA通常是指通过设计来减少系统不能提供服务的时间。假设系统一直能够提供服务,那么这时就可以称系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,那么可以称系统的可用性是99%。很多公司(例如三大运营商、百度、京东等)的高可用目标都是4个9,也就是99.99%。

百度的搜索首页是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com能不能访问来判断“网络的连通性”。百度高可用的服务给人留下了“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这可以说是对百度HA最高的褒奖了。

众所周知,单点是系统高可用的最大的风险和敌人,应该尽量在系统设计的过程中避免单点。在方法论上,高可用保证的原则是“集群化”,或者叫“冗余”。只有一个单点,挂了服务会受影响;如果有冗余备份,那么挂了还有其它备份能够继续提供服务。RAC提供了实例级别的冗余,DG提供了数据存储级别的冗余。

若要保证系统高可用,则架构设计的核心准则是:冗余。有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。

Oracle Failsafe、DG(Data Guard)、RAC和OGG均为Oracle公司提供的高可靠性(HA)解决方案,但是这几种方案之间却存在着很大区别,下面分别讲解:

(二)Failsafe和RAC的区别

1、操作系统

Failsafe系统局限于Windows平台,必须配合MSCS(microsoft cluster server)使用,而RAC最早是在UNIX平台推出的,目前已扩展至Linux和Windows平台,通过OSD(operating system dependent)与系统交互。对于高端的RAC应用,UNIX依然是首选的平台。

2、系统结构

Failsafe采用的是Share Nothing结构,即采用若干台服务器组成集群,共同连接到一个共享磁盘系统,在同一时刻,只有一台服务器能够访问共享磁盘,能够对外提供服务。只要当此服务器失效时,才有另一台接管共享磁盘。RAC则是采用Share Everything结构,组成集群的每一台服务器都可以访问共享磁盘,都能对外提供服务。也就是说Failsafe只能利用一台服务器资源,RAC可以并行利用多台服务器资源。

3、运行机理

组成Failsafe集群的每台SERVER有独立的IP,整个集群又有一个IP,另外还为Failsafe Group分配一个单独的IP(后两个IP为虚拟IP,对于客户来说,只需知道集群IP,就可以透明访问数据库)。工作期间,只有一台服务器(preferred或owner或manager)对外提供服务,其余服务器(operator)成待命状,当前者失效时,另一服务器就会接管前者,包括Failsafe Group IP与Cluster IP,同时Failsafe会启动上面的Database Service,LISTENER和其它服务。客户只要重新连接即可,不需要做任何改动。对于RAC组成的集群,每台服务器都分别有自已的IP,INSTANCE等,可以单独对外提供服务,只不过它们都是操作位于共享磁盘上的同一个数据库。当某台服务器失效后,用户只要修改网络配置(例如,TNSNAMES.ORA),即可重新连接到仍在正常运行的服务器上,再和TAF结合使用时,甚至网络也可配置成透明的。

4、集群容量

Failsafe通常为两台,RAC在一些平台上能扩展至更多台服务器。

5、分区

Failsafe数据库所在的磁盘必须是NTFS格式的,RAC则相对灵活,裸设备、ASM等都可以。

综上所述,Failsafe比较适合一个可靠性要求很高,应用相对较小,对高性能要求相对不高的系统,而RAC则更适合可靠性、扩展性、性能要求都相对较高的较大型的应用。

(三)RAC和OPS区别

RAC是OPS(Oracle Parallel Server)的后继版本,继承了OPS的概念,但是RAC是全新的,Cache机制和OPS完全不同。RAC解决了OPS中两个节点同时写同一个BLOCK引起的冲突问题。从产品上来说RAC和OPS是完全不同的产品,但是也可以认为是相同产品的不同版本。

(四)RAC、DG和OGG的区别

RAC和DG是高可用体系中的常用的两种工具,每个工具既可以独立应用,也可以相互配合使用。但是它们各自的侧重点不同,适用场景也不同。

RAC是本地的高可用集群,每个节点用来分担不同或相同的应用,以解决运算效率低下、单点故障这样的问题,它是几台硬件相同或不相同的服务器加一个共享存储来构成的。RAC的强项在于解决单点故障负载均衡,所以,RAC方案常用于7*24的核心系统,但RAC方案中的数据只有一份,尽管可以通过RAID等机制避免存储故障,但是数据本身是没有冗余的,因此需要加强备份。

DG是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,是一种异地容灾的解决方案。DG通过冗余数据的方式来提供数据保护,通过日志同步机制保证冗余数据和主库之间的同步,这种同步可以是实时、延时、同步或异步等多种形式。DG常用于异地容灾和小企业的高可用性方案,可以在备库上执行只读地查询操作,从而分散主库的性能压力。

OGG软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向复制、层叠、点对点、级联等多种灵活的拓扑结构,可以实现只复制某几个表的功能。

Oracle高可用性产品比较见下表:

双机热备/Failsafe

OPS(Oracle Parallel Server)

RAC

DGDataGuard

OGG

共享存储

不是

独立存储

不是

保护类型

热备只有1个实例,1个数据库,做不了并发和负载均衡

实例冗余,负载均衡

实例级冗余

数据库层次冗余

schema或表级别冗余

需要的软硬件资源

只有两台机器和磁盘阵列,有一个漂移的IP,不能共享存储

有两台机器和磁盘阵列,有两个虚拟IP

可以有多台机器和磁盘阵列,1个节点有1个虚拟IP

有独立的机器和独立的存储

有独立的机器和独立的存储

优缺点

Failsafe是免费的,一台服务器闲置,硬件浪费较大

在并发读写性能上较差

读写并发性能较好,但是对于DBA的技能和专业性要求较高,软件上也需要单独购买

是一个轻量级的容灾系统,从Oracle 11g开始还能在备库节点上进行读写和自动故障转移

可以在表或schema级别实现实时复制,可以实现双向同步

拓扑结构

支持一对多模式,只能实现单向同步

支持一对一、一对多、多对一、双向复制等多种拓扑结构

& 说明:

有关高可用产品的更多内容可以参考:http://blog.itpub.net/26736162/viewspace-2141231/

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。

About Me:小麦苗

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● QQ:646634621  QQ群:618766405

● 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

【DB笔试面试766】在Oracle中,RAC、DG和OGG的区别有哪些?相关推荐

  1. 【DB笔试面试164】在Oracle中,如何彻底停止expdp数据泵进程?

    [DB笔试面试164]在Oracle中,如何彻底停止expdp数据泵进程? 真题1. 如何彻底停止 expdp 进程? 答案:许多同事在使用expdp命令时,不小心按了CTRL+C组合键,然后又输入e ...

  2. 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 一步一步搭建oracle 11gR2 rac+dg之环境准备 ...

  3. Oracle中用户和架构之间的区别?

    本文翻译自:Difference between a user and a schema in Oracle? Oracle中的用户和架构有什么区别? #1楼 参考:https://stackoom. ...

  4. 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之grid安装 (四) 本章目录结构: 这一步也比较重要,主要是安装ASM,如果 ...

  5. Oracle中rank() over, dense_rank(), row_number() 的区别

    Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...

  6. Oracle中Null与空字符串''的区别

    http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN   作者:jsjzzh   发布时间:2007-1 ...

  7. Oracle中sys和system用户的区别

    Oracle中sys和system用户的区别 1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as ...

  8. oracle数据库rank over用法,Oracle中rank() over, dense_rank(), row_number() 的区别

    Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...

  9. oracle的int范围,oracle中int类型和number类型区别

    oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...

最新文章

  1. SAP PM入门系列22 - IH06 Display Functional Location
  2. 利用JS获取IE客户端IP及MAC的实现
  3. 【机器学习算法-python实现】采样算法的简单实现
  4. 四十六、和我一起看看,国外的Python考试到底是怎么样(下篇)
  5. mysql索引1908
  6. 阿里影业正式成为阿里集团子公司 俞永福辞任执行董事
  7. 用C++开发与调用WebService的例子
  8. 【数据结构与算法基础】线性表
  9. [swift] LeetCode 206. Reverse Linked List
  10. Win7环境下VS2015安装+CUDA 10.0安装配置教程以及安装环境时遇到的一些问题
  11. 计算机无法进行磁盘,电脑硬盘无法分区怎么办
  12. [多阶段DP] 洛谷P1282 多米诺骨牌 (01背包)
  13. 漫谈唯一设备ID,android开发工程师
  14. Java基础项目 开发团队分配管理系统
  15. OracleLinux 6.4挂载NTFS盘的方法
  16. 颜色透明度百分比对应8位颜色值
  17. 学习Oracle数据库入门到精通教程资料合集
  18. 怎么实现MindMapper破解版中格式的设置
  19. 工具类APP的生存之道
  20. 结构化 VS 非结构化

热门文章

  1. 开发中遇到的小问题记录
  2. 软件设计模式之模拟游角色选择(Darren建造者模式)
  3. 解决B站视频声音小的情况
  4. python构造矩阵_Python矩阵
  5. 巨噬细胞膜包封的抗菌纳米颗粒|巨噬细胞膜包被乳腺癌靶向纳米粒(齐岳生物)
  6. 互联网云学院(邯郸AESO培训基地)
  7. 华镭操作系统桌面版 RAYS LX
  8. 7.18记录STM32学习
  9. iphone的Touch事件
  10. Mac OS X 下修改文件属性:创建时间、修改时间