网站首页 > 技术文章 正文
概述
Oracle Real Application Cluster (RAC,实时应用集群)用来在集群环境下实现多机共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是oracle数据库支持网络计算环境的核心技术。它是oracle数据库支持网络计算环境的核心技术。
一. RAC 并发(DLM-->GRD)
RAC 的本质是一个数据库,运行在多台计算机上的数据库,它的主要任务是数据库就是事务处理,它通过 Distributed Lock Management(DLM:分布式锁管理器) 来解决并发问题。因为RAC的资源是共享的,为了保证数据的一致性,就需要使用DLM来协调实例间对资源的竞争访问。
RAC 的DLM 就叫作 Cache Fusion。
在DLM 中,根据资源数量,活动密集程度,把资源分成两类:Cache Fusion和Non-Cache Fusion。
Cache Fusion Resource指数据块这种资源,包括普通数据库,索引数据库,段头块(Segment Header),undo 数据库。
Non-Cache Fusion Resource是所有的非数据库块资源, 包括数据文件,控制文件,数据字典,Library Cache,share Pool的Row Cache等。Row Cache 中存放的是数据字典,它的目的是在编译过程中减少对磁盘的访问。
在Cache Fusion中,每一个数据块都被映射成一个Cache Fusion资源,Cache Fusion 资源实际就是一个数据结构,资源的名称就是数据块地址(DBA)。每个数据请求动作都是分步完成的。首先把数据块地址X转换成Cache Fusion 资源名称,然后把这个Cache Fusion 资源请求提交给DLM, DLM 进行Global Lock的申请,释放活动,只有进程获得了PCM Lock才能继续下一步,即:实例要获得数据块的使用权。
Cache Fusion要解决的首要问题就是:数据块拷贝在集群节点间的状态分布图, 这是通过GRD 实现的。
GRD(Global Resource Directory)
可以把GRD 看作一个内部数据库,这里记录的是每一个数据块在集群间的分布图,它位于每一个实例的SGA中,但是每个实例SGA中都是部分GRD,所有实例的GRD汇总在一起就是一个完整的GRD。
RAC 会根据每个资源的名称从集群中选择一个节点作为它的Master Node,而其他节点叫作Shadow Node。 Master Node 的GRD中记录了该资源在所有节点上的使用信息,而Shadow Node的GRD中只需要记录资源在该节点上的使用情况,这些信息实际就是PCM Lock信息。PCM Lock 有3个属性: Mode,Role 和 PI(Past Image)
二. RAC 架构
分享一下RAC硬件架构的拓扑和软件架构拓扑
三. Oracle RAC的原理
- 集群环境层面:
- 并发控制,健忘症,脑裂,IO隔离;
- 共享存储层面:
- 存储层,网络层,集群件层,应用层
- 数据库实例层面:
- 并发访问和控制
1、集群环境&共享存储层面
-并发控制
Oracle RAC中,使用Distribute Lock Managerment(DLM)机制进行多个节点间并发访问的控制
-健忘症(一个节点更改,其他人不知道)
整个集群只有一份集群配置信息,Oracle RAC使用OCR(oracle 集群注册器) Disk文件解决
-脑裂
在Oracle RAC中Voting Disk用来记录节点间成员的状态,出现脑裂时,通过投票机制,获得最高票数或者最早达到的获得投票的,幸存,其他节点被踢出。
-IO隔离
Oracle RAC采取直接重启故障节点来限制已剔除节点对共享数据的访问
如果某个节点有故障,则踢出后并重启该节点,达到不让其访问数据的目的,实现自愈
-共享存储的共享和并发访问
需要解决存储设备的共享和并发访问问题
2、RAC层面
- 存储层
Cache fusion lock
- 网络层
共4种网络环境:
Public网络-对外提供数据查询服务、数据库维护等
Virtua网络-提供应用连接
Private网络-用于RAC心跳和cache fusion
存储网络-存储设备、HBA卡、光纤交换机等组成
-集群件层
Oracle clusterware:集群管理软件保证多主机之间的协调工作
-应用层
oracle RDBMS层面:由若干CRS Resourcezucheng
oracel RAC提供高可用服务:LMON进程监控应用(CRS Resource),应用异常时对其进行重启、切换等;
上面主要讲了RAC并发逻辑、硬件架构、软件架构拓扑与原理解析,后面会分享更多关于DBA内容,侧重oracle集群、容灾、优化方面,感兴趣的朋友可以关注下~
猜你喜欢
- 2025-07-17 Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 2025-07-17 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 2024-10-23 oracle 三种高可用方案 oracle高性能解决方案
- 2024-10-23 看架构专家大话OracleRAG:集群+高可用性+备份与恢复
- 2024-10-23 Oracle 19c集群心跳网络全部配错该如何抢救
- 2024-10-23 快速了解Canal 快速了解汉字知的读音写法等知识点
- 2024-10-23 ES架构分析 es分布式架构原理
- 2024-10-23 基于mycat+haproxy+keepalived搭建mysql集群(Haproxy篇)
- 2024-10-23 Oracle基础知识之asm磁盘组 oracleasm磁盘管理
- 2024-10-23 学习实践-Linux Hadoop集群配置与搭建
你 发表评论:
欢迎- 612℃几个Oracle空值处理函数 oracle处理null值的函数
- 603℃Oracle分析函数之Lag和Lead()使用
- 592℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 589℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 583℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 576℃【数据统计分析】详解Oracle分组函数之CUBE
- 566℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 558℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)