Oracle Rac基础

  • RAC(real application clusters)
    • 工作原理
    • Cache Fusion
    • 后台程序
    • 共享存储
    • OPS与RAC区别

RAC(real application clusters)

  • 整个集群系统由Oracle Clusterware(集群就绪软件)和Real Aplication(RA)两大部分组成。
  • 一个Oracle Rac数据库有多个服务器节点组成,每个服务节点上面都有自己独立的OS,ClusterWare,Oracle RAC数据库程序等,每个节点都有自己的网络监听器。ClusterWare是一个集群软件,主要用于集群系统管理,Oracle RAC数据库程序用于提供Oracle实例进程,以提供客户端访问集群系统,监听服务主要用于监控自己网络端口的信息,所有的服务和程序提供操作系统都去访问一个共享存储,最终完成数据的读写。共享存储的方式有很多种,可以通过自动存储管理(ASM),Oracle集群文件系统(OCFS),裸设备(RAW),网络共享区域存储(NAS)等来保证整个集群系统的数据一致性。
  • RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。

这个图分为三个部分,第一个部分就是客户端,第二个部分是节点部分,最后一部分是共享存储部分。

工作原理

根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备,在以前的版本中,Oracle RAC必须借助第三方Cluster软件,但是从Oracle10g开始,Oracle推出了自身的集群软件CRS(Cluster Ready Service)。

每个节点间可以通过私有网络进行通信,互相监控节点的运行状态,Oracle数据库所有的数据文件,联机日志文件,控制文件等均放在集群的共享设备上面,而共享设备可以是RAW,ASM,OCFS2等,所有集群节点可以同时读写共享存储。

  • 私有网络(Network Interconnect)——RAC 之间需要一个高速互联的私有网络来处理通信和 Cache Fusion。
  • 共享存储(shared Storage)——RAC 需要共享存储设备让所有的节点都可以访问数据文件。
  • 对外服务的网络(Production Network)——RAC 对外服务的网络。客户端和应用都通过这个网络来访问。


逻辑结构上看,每一个参加集群的节点有一个独立的instance(数据库实例),这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。

当节点1坏了,不仅仅只是将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。主要是一些提交和未提交的事务。比如实例1坏了,实例2就要从实例1的redo里面读最后一次checkpoint之后的信息,就是实例1最后将所有的数据写到磁盘之后产生的所有的redo应用,该回滚的回滚,该恢复的恢复。即现将以提交和未提交的事务产生的redo都先应用,因为是最后一次CKPT之后的信息,之前的信息是已经写到磁盘上面了,所谓的恢复是将未写到磁盘上面的信息进行恢复。(虽然实例坏了,但是实例的redo并没有坏,放置在共享存储上面,它的redo还是允许其他实例访问的)实例2读取实例1的redo,然后全部应用一遍,之后再回滚未提交的事务修改的数据块。

Cache Fusion

RAC是一个数据库执行在多个实例上,通过DLM(Distributed Lock Management):分布式锁管理器来解决并发问题。RAC各个节点间的共享资源,为了保证每一个节点訪问数据的一致性,使用DLM来协调各个实例间的资源竞争,这个DLM在RAC中就叫Cache Fusion。

在Cache Fusion 中,每个数据块都被映射成Cache Fusion资源,该资源实际上就是一个数据结构,资源的名称就是数据块地址,数据块请求过程:先将数据块地址X转换成Cache Fusion资源名称,然后把这个Cache fusion 资源请求提交给DLM,DLM进行Global Lock 的申请,释放活动,只要进程获得了PCM Lock才能继续下一步。

使用 Cache Fusion 时,RAC 的各个节点间数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。

后台程序

  • DIAG(the diagnosability daemon,诊断守护进程)负责捕获 RAC 环境中进程失败的相关信息。并将跟踪信息写出用于失败分析,DIAG 产生的信息在与 Oracle Support 技术合作来寻找导致失败的原因方面是非常有用的。每个实例仅需要一个 DIAG 进程。
  • LMON(Lock Monitor Process,锁监控进程)主要借助两种心跳机制来完成健康检查:1. 节点间的网络心跳(Network Heartbeat)以想象成节点间定时的发送 ping 包检测节点状态,如果能在规定时间内收到回应,就认为对方状态正常。2. 通过控制文件的磁盘心跳(controlfile heartbeat)个节点的 CKPT 进程每隔 3 秒钟更新一次控制文件的数据块,这个数据块叫做 Checkpoint Progress Record,控制文件是共享的,所以实例间可以互相检查对方是否及时更新来判断。
  • LCK(the lock process,锁进程)管理非缓存融合,锁请求是本地的资源请求。LCK 进程管理共享资源的实例的资源请求和跨实例调用操作。在恢复过程中它建立一个无效锁元素的列表,并验证锁的元素。由于处理过程中的 LMS 锁管理的首要职能,只有一个单一的 LCK 进程存在每个实例中。
  • LMD(the global enqueue service daemon,锁管理守护进程)是一个后台进程,也被称为全局的队列服务守护进程,因为负责对资源的管理要求来控制访问块和全局队列。在每一个实例的内部,LMD 进程管理输入的远程资源请求(即来自集群中其他实例的锁请求)。此外,它还负责死锁检查和监控转换超时。
  • LMS(Global cache service processes 全局缓存服务进程)进程主要用来管理集群内数据块的访问,并在不同实例的 Buffer Cache 中传输数据块镜像。直接从控制的实例的缓存复制数据块,然后发送一个副本到请求的实例上。并保证在所有实例的 Buffer Cache 中一个数据块的镜像只能出现一次。LMS 进程靠着在实例中传递消息来协调数据块的访问,当一个实例请求数据块时,该实例的 LMD 进程发出一个数据块资源的请求,该请求指向主数据块的实例的 LMD 进程,主实例的 LMD 进程和正在使用的实例的 LMD 进程释放该资源,这时拥有该资源的实例的 LMS 进程会创建一个数据块镜像的一致性读然后把该数据块传递到请求该资源的实例的BUFFER CACHE 中。LMS 进程保证了在每一时刻只能允许一个实例去更新数据块,并负责保持该数据块的镜像记录(包含更新数据块的状态 FLAG)。RAC 提供了 10 个 LMS 进程(0~9),该进程数量随着节点间的消息传递的数据的增加而增加。

共享存储

  • RAW:通过硬件支持的共享存储系统,直接用 RAW 设备存储,可以支持集群软件文件和数据库文件。是 oracle11g 之前的版本中 RAC 支持的存储方式,在 Oralce9i 之前,OPS/RAC的支持只能使用这样的方式,把共享存储映射到 RAW Device,然后把 Oracle 需要的数据选择 RAW device存储。
  • OCFS(Oracle Cluster File System):Oracle 自己的实现的集文件系统。
  • NFS:通过 NFS 实现共享存储,不过需要经过 Oracle 认证的 NFS 才行,可以支持CRS集群软件文件和数据库文件。
  • ASM:集合 RAW 方式 I/O 高性能和集群文件系统易管理等优点,Oracle10g 下推出的共享存储方式,但是本身 ASM 就是需要 Oracle 的实例支持,所以 ASM 仅支持数据库文件,而不支持 CRS 文件。

OPS与RAC区别

在 Oracle9i 之前,RAC 称为 OPS(Oracle Parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC 采用了Cache Fusion(高缓存合并)技术,节点已经取出的数据块更新后没有写入磁盘前,可以被另外一个节点更新,然后以最后的版本写入磁盘。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。

Oracle Rac基础相关推荐

  1. 某项目Oracle RAC基础库发生ASM磁盘文件头损坏宕机事件分析排查

    问题描述: 2021年2月26日收到某现场项目经理电话反馈现场Oracle RAC数据库发生宕机事件,但数据库已恢复正常,需要我方进行故障分析排查原因. 日志分析: 到了现场后通过现场人员对接登录到此 ...

  2. Oracle RAC CSS 超时计算 及 参数 misscount, Disktimeout 说明

    一. 概述 在之前的文章: RAC 的一些概念性和原理性的知识 http://blog.csdn.net/tianlesoftware/article/details/5331067 提到OCSSD  ...

  3. 关于ORACLE RAC心跳问题的释疑

    1.rac心跳的作用: 检测集群节点间的网络健康状态,还可用做缓存同步刷新及全局资源维护.在grid control出现后还传输数据块,其内联数据通信量比较大,通常是千兆网,当然使用万兆更好. 2.r ...

  4. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  5. oracle12数据库安装步骤,ORACLE RAC 12C(12.2.0.1)数据库软件安装步骤

    安装前提 已成功安装oracle GI 基础环境 安装前环境配置 1.创建ORACLE_BASE和ORACLE_HOME目录 mkdir /u01/app/oracle mkdir /u01/app/ ...

  6. oracle rac理论知识

    oracle数据库高可靠性高性能的特性是很多企业需要的,这些年一直给各大政府企业做oracle咨询与规划,实施安装以及维护,回头看看,自己已经忘记大部分oracle rac的整体具体架构理论知识,现在 ...

  7. 负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)

    Oracle RAC 服务器端连接负载均衡(Load Balance) Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情况,将新的连接请求分配到负荷最小的节点上去.当数据库处于 ...

  8. Oracle RAC集群体系结构

    一. Oracle集群体系结构 Oracle RAC,全称是Oracle Real Application Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Ora ...

  9. Oracle RAC在思科UCS上的应用

    原文地址: http://network.chinabyte.com/259/12529259.shtml UCS(统一计算系统)是Cisco提供的计算和网络一体化解决方案,它具有无状态计算(硬件级虚 ...

最新文章

  1. 机器学习分类指标:精确率、准确率、召回率详解
  2. Python数据挖掘1:创建一位数组和二维数组,取最大最小值,切片
  3. Spring事务管理 与 SpringAOP
  4. 如何为网站项目添加子项目
  5. 委托、多播委托(MulticastDelegate)
  6. springboot+shiro+redis项目整合
  7. 编写css让一个已知宽高的div元素水平居中?垂直居中
  8. .Net之配置文件自定义
  9. mysql删除用户账号和密码_mysql添加、删除用户和授权用户
  10. x-requested-with 请求头 区分ajax请求还是普通请求
  11. SSH连接virtualbox中的虚拟机
  12. 题解-ZeroJudge-c686 高斯符號
  13. python3 文件处理
  14. 3.用户画像:方法论与工程化解决方案 --- 标签数据存储
  15. win10缩放导致html,win10屏幕字体缩放模糊怎么办_win10缩放后字体模糊如何解决
  16. 保护眼睛——设置WIN7和XP 窗体、Chrome、IE网页背景颜色
  17. Vue开发者工具 安装
  18. 小故事有大能量(爱情故事)
  19. 快递100显示查询错误?快递100快递查询类FAQ
  20. 第三课——win10常用快捷键的使用

热门文章

  1. Python海龟绘图螺旋线
  2. 谷粒商城-12-p300-p338
  3. 百度机器学习训练营笔记——数学基础
  4. 关于浏览器的两则旧闻
  5. 系统安装SQL Sever2000后1433端口未开放,如何打开1433端口的解决方法 这篇文章主要针对Win2003系统安装SQL Sever2000后1433端口未开放,如何打开1433端口的解决
  6. Docker安装Gogs搭建git服务器
  7. pandas使用pd.offsets.MonthEnd把dataframe数据中的时间数据列统一移动到所在月份的月底、最后一天(move to month end)
  8. 企业ERP项目实施,遇见问题与心得分享
  9. java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializ
  10. negative和passive的反义词_negative 和 passive的区别?