Oracle RAC心跳机制

Oracle RAC集群CSS详解:从心跳机制到脑裂仲裁与排障实战 集群环境中,节点间的一致性保障是稳定运行的基石。Oracle RAC通过集群同步服务(CSS)维护成员关系与共享存储访问仲裁,其核心机制包括网络与磁盘双心跳检测、票数过半的脑裂仲裁,以及节点加入或离开时触发的重配置流程。理解CSS的定位与原理,能帮助运维人员在面对节点驱逐、心跳超时或表决文件异常时,快速定位根因并采取有效措施。本文结合实践,梳理CSS的日常检查命令、日志分析要点及典型故障排查链路,为保障数据库集群高可用提供参考。 阅读详情

1、网络心跳(Network HeartBeat,NHB)

       首先是确定集群节点之间的连通性,以便节点之间能够了解彼此的状态,而对于Oracle集群,这是通过节点间的网络心跳来实现的。对于Oracle集群,ocssd.bin守护进程每秒钟向集群的其他节点发送网络心跳(当然是通过集群的私网)。

[root@lissen-node2 trace]# ps -ef | grep ocssd.bin | grep -v grep
grid      5081     1  1 19:43 ?        00:01:07 /u19/app/19.2.0.0.0/grid/bin/ocssd.bin

[root@lissen-node2 trace]# grep NHB ocssd.trc
2019-11-28 22:37:37.228 :    CSSD:1378293504: [     INFO] clssnmCheckSplit: Node 1, lissen-node1, dead, last DHB (1574951827, 800434) after NHB (1574951827, 800284), but within reboot time 3000
2019-11-28 22:37:37.229 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.366 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.467 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.567 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.644 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.644 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434
2019-11-28 22:37:37.745 :    CSSD:1378293504: [     INFO] clssnmCheckKillStatus: Node 1, lissen-node1, down, due to timeout of DHB; last NHB TOD invariant clock 800284, TOD invariant clock 800434

2、磁盘心跳(Disk HeartBeat,DHB)

       磁盘心跳的主要目的就是当集群脑裂时帮助制定脑裂的解决方案。Oracle集群的每一个节点每秒钟都会向集群的所有表决盘注册本地节点的磁盘心跳信息(也就是说,所有VF [Voting File]中的信息是相同的),同时也会将自己能够联系到的集群中其他节点的信息,或者说本节点认为集群中的成员列表信息写入到表决盘中。一旦发生脑裂,CSS的重新配置线程就可以通过表决盘中的信息了解集群中节点之间的连通性,从而决定集群会分裂成几个子集群,以及每个子集群包含的节点情况和每个节点的状态。磁盘心跳是通过ocssd.bin守护进程来实现的。

root@lissen-node2 trace]# grep "DHB" ocssd.trc
2019-11-28 20:26:51.293 :    CSSD:2399300800: [     INFO] clssnmvDHBValidateNCopy: node 1, lissen-node1, has a disk HB, but no network HB, DHB has rcfg 470438296, wrtcnt, 1198, LATS 3797414, lastSeqNo 0, uniqueness 1574943471, timestamp 1574944010/3901454
2019-11-28 20:26:55.444 :    CSSD:2399300800: [     INFO] clssnmvDHBValidateNcopy: Saving DHB uniqueness for node(1/lissen-node1), latestInfo(1574943471), readInfo(1574943471), nodeInfoDHB(0)
2019-11-28 20:26:55.445 :    CSSD:2399300800: [     INFO] clssnmvDHBValidateNcopy: Setting LATS valid due to second DHB seen on disk(0x7fa97c3365a0) for node(1/lissen-node1) nodeStatus 0x3
......
2019-11-28 20:27:03.538 :    CSSD:1708447488: [     INFO] clssnmvDHBValidateNCopy: node 1, lissen-node1, has a disk HB, but no network HB, DHB has rcfg 470438296, wrtcnt, 1216, LATS 3809654, lastSeqNo 1207, uniqueness 1574943471, timestamp 1574944022/3913564
2019-11-28 20:36:07.604 :    CSSD:1384389824: [     INFO] clssnmvDHBValidateNCopy: node 1, lissen-node1, h1582630987 to node structure for node lissen-node1, number 1; previous unique value was 0
2020-02-25 19:43:57.557 :    CSSD:3694849216: [     INFO] clssnmvDHBValidateNCopy: node 1, lissen-node1, has a disk HB, but no network HB, DHB has rcfg 478125832, wrtcnt, 21815, LATS 4294942300, lastSeqNo 21780, uniqueness 1582630987, timestamp 1582631036/4294947150

3、本地心跳(Local HeartBeat,LHB)

       这种心跳机制是在11gR2版本中被引入的。这种心跳的作用是监控ocssd.bin进程以及本地节点的状态。在10g版本中,Oracle通过oclsomon和oprocd来实现。守护进程oclsomon.bin监控ocssd.bin进程的状态,oprocd.bin进程监控本节点是否出现了性能问题(例如,hang住)。从11.2.0.1版本开始,新的集群cssdagent和cssdmonitor被引入,它们的功能就是监控本地节点的ocssd.bin进程状态和本地节点的状态(是否hang住)。

[root@lissen-node2 trace]# ps -ef | grep cssdagent | grep -v grep
root      5045     1  0 19:43 ?        00:00:10 /u19/app/19.2.0.0.0/grid/bin/cssdagent
[root@lissen-node2 trace]# ps -ef | grep cssdmonitor | grep -v grep
root      5008     1  0 19:43 ?        00:00:10 /u19/app/19.2.0.0.0/grid/bin/cssdmonitor

4、网络心跳misscount和磁盘心跳disktimeout查询及设置

查询网络心跳NHB misscount
[root@lissen-node1 ~]# crsctl get css misscount;
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.

查询磁盘心跳DHB disktimeout
[root@lissen-node1 ~]# crsctl get css disktimeout;
CRS-4678: Successful get disktimeout 200 for Cluster Synchronization Services.

修改网络心跳NHB misscount
[root@lissen-node1 ~]# crsctl set css misscount 50;

CRS-4684: Successful set of parameter misscount to 50 for Cluster Synchronization Services.

[root@lissen-node1 ~]# crsctl set css misscount 30;
CRS-4684: Successful set of parameter misscount to 30 for Cluster Synchronization Services.

修改磁盘心跳disktimeout

crsctl set css disktimeout 300

5、脑裂和健忘

脑裂:网络心跳misscount(私网不通)会导致的问题

       由于网络心跳misscount会导致,每个节点都认为其他节点不存在了,这时候表决盘被引入,通过投票机制,获得最高票数或者最早到达的获得投票的,幸存,其他节点被踢出。在Oracle RAC中Voting Disk用来记录节点间成员的状态,出现脑裂时,仲裁哪个partition获得控制权,其他的partition被剔除,之后ORACLE RAC就会很不友善的给踢出去的机子重启,这就是为什么有时候机子会不断重启的原因。

[root@lissen-node2 trace]# tail -f alert.log 
2020-02-25 21:05:19.612 [OCSSD(5081)]CRS-1605: CSSD voting file is online: /dev/asm-disk5; details in /u19/app/grid/diag/crs/lissen-node2/crs/trace/ocssd.trc.
2020-02-25 21:05:19.635 [OCSSD(5081)]CRS-1605: CSSD voting file is online: /dev/asm-disk3; details in /u19/app/grid/diag/crs/lissen-node2/crs/trace/ocssd.trc.
2020-02-25 21:05:19.635 [OCSSD(5081)]CRS-1605: CSSD voting file is online: /dev/asm-disk4; details in /u19/app/grid/diag/crs/lissen-node2/crs/trace/ocssd.trc.

…

健忘:节点间配置文件不一致导致的。

oracle rac对心跳要求_Oracle-RAC集群心跳 心跳线物理布线注意事项不建议直连网线,建议采用交换机连接方式心跳线与业务网络分开单独接线若公用一个交换机时,使用VLAN隔离Oracle不支持使用交叉线(cross-cabling)作为Clusterware的内部连接导致集群不稳定限制了两个节点RAC扩展建议心跳交换机使用两个交换机做主备,冗余RAC中心跳线作用承担了心跳作用(检测集群节点间的网络健康状态)缓存同步刷新全局资源维护当出现gc(gr... 阅读详情

相关推荐

faster lio 回环 加入GTSAM优化的记录

对Faster lio 加入回环、gtsam优化,在室外建图遇到的问题和过程

Nico_jion的博客 2599

Oracle RAC集群三种心跳机制

一:网络心跳       ocssd进程每秒钟通过集群的私网会向集群的其他节点发送网络心跳.       例如一个4节点的集群,集群的每一个节点每一秒钟都会向集群中的其他三个几点发送网络心跳信息,也就是说每个节点每一秒钟也会收到集群中其他节点发送的网络心跳。既然节点间互相发送网络心跳,就需要有一种机制来确定节点之间的连通性,以及当网络心跳出现问题时的处理机制。 网络心跳主要通过以下的ocs

dbhang的博客 6540

用Python实现四叉树(quad tree)

import numpy as np #正方形类 class square: #lx、ly为左上角坐标(x对应行号,y对应列号),rx、ry为右下角坐标 def __init__(self,lx,ly,rx,ry): self.lx=lx self.ly=ly self.rx=rx self.ry=ry #检查该矩阵中是否满足条件 #参数:原矩阵,阈值 #返回值:布尔类型 def check(s

weixin_44164489的博客 5868

RAC数据库实例之间的三种心跳机制

和CSS 部分类似,RAC数据库中存在3种心跳机制:网络心跳、磁盘心跳、本地心跳 1、网络心跳: 数据库的网络心跳机制是通过LMNO进程来实现的,每个实例的LMON金嫦娥会定期通过数据库的私网(内存融合使用的网络)与所有实例进行通信,以确认其他节点(实例)的状态。如果,某个实例一段时间之内(默认 300s)不能响应其他节点发动的网络心跳信息,那么数据库集群就会需要进行重新配置,而用户能后看的最直观的信息就是ORA-29740错误。所以,数据库层面的网络心跳与集群中的网络心跳类似。 另外,需要说...

qq_22083251的博客 2968

训练集、验证集、测试集!YOLO系列标签数量统计!

【代码】训练集、验证集、测试集!YOLO系列标签数量统计!

qq_26281057的博客 649

GD32H7实战:5步搞定YOLO轻量化模型部署到MCU(附避坑指南)

本文详细介绍了如何将YOLO轻量化模型部署到GD32H7 MCU的完整实战流程。通过五个关键步骤,涵盖环境搭建、模型训练、格式转换到工程集成,并重点分享了使用GD32AI-ModelZoo工具链进行MCU部署的避坑指南,帮助开发者在资源受限的边缘设备上实现高效目标检测。

weixin_29070861的博客 445

Oracle RAC 三种心跳机制

是集群节点间用于检测存活状态的核心机制,确保节点间的通信正常并避免脑裂(Split Brain)问题。在Oracle RAC(Real Application Clusters)中,

kiwixing的博客 1806

Android malloc_debug实现原理及使用

2)设置 __libc_globals 对象中的 libc_globals.default_dispatch_table 和 current_dispatch_table 指向 malloc_dispatch_table,以后在 malloc 库函数里都会通过 GetDispatchTable(),这个函数就是返回的 current_dispatch_table 指针;MAX_FRAMES 表示被抓取的 frames 的数量,如果设为0, 表示在分配空间被释放时,不会抓取任何调用栈。

专注于系统快稳省领域 3741

ORACLE集群管理-集群丢失心跳导致集群重新配置(NHB,DHB,LHB)步骤

网络心跳主要由以下occd.bin线程: 发送线程clssnmSendingThread,该线程每秒钟向集群钟所有节点发送心跳信息。 分析线程clssnmPollingThread,该线程会分析收到的网络信息(私有),如果发现某一个或节点出现丢失网络心跳(超过misscount值)就会通知集群进行重新配置。 重新配置现场clssnmRcfgMgrTheead该进程负责集群重新配置。...

oradbm的博客 799

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 501

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1766

对于RAC心跳以及仲裁机制的理解

1、节点1网卡损坏,无法接受到其他节点的心跳。 节点2能够接受到节点三的心跳,节点3能够接收到节点2的心跳。 节点1,心跳信息给votingdisk说:“只有我活着!” 节点2、3,心跳信息给votingdisk说:“我和2,我和3,都活着”。 votingdisk将在自身节点1的部分上写一个“赐死块”(kill block),节点1读取到...

weixin_33800463的博客 493

基于WebRTC的现代在线视频会议系统设计与实现

本文详细介绍了如何使用Java和WebRTC技术构建一个完整的在线视频会议系统。我们将从WebRTC的基础原理讲起,逐步深入到信令服务器设计、媒体服务器配置、前后端实现以及高级功能的开发。文章包含大量代码示例和架构图,旨在为开发者提供一套完整的视频会议解决方案。关键词:WebRTC、视频会议、Java、Spring Boot、信令服务器、STUN/TURN、媒体服务器:获取摄像头和麦克风访问权限:处理点对点连接和流传输:实现浏览器之间的任意数据交换。

2201_76125393的博客 186

oracle rac对心跳要求_Oracle RAC心跳机制介绍.pdf

Oracle 12.2体系架构图系列课程1、架构图整体内容组成及模块划分2、ADG3、IN-MEMORY4、Instance&File System5、多租户6、RAC系列1)RAC简介2 )RAC在版本演讲中的变化3 )RAC与单实例DB的区别4 )RAC常⻅的问题5 )RAC的⼼跳机制(集群⼼跳&实例⼼跳)6)内存融合机制7)12.2RAC的新特性(串⾏到并⾏)7、单实例数据库...

weixin_39943678的博客 266

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【云和恩墨大讲堂】Oracle RAC精讲之心跳机制

世界上最遥远的距离,不是生与死,而是我们是集群的两个节点,你却听不到我的心跳。自从云和恩墨大讲堂推出Oracle12.2体系架构图的系列课程,受到广大技术朋友们的关注和支持。本周是系列第四...

weixin_54551388的博客 256

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

达梦DMDSC集群对比Oracle RAC集群心跳仲裁机制

达梦DMDSC集群对比Oracle RAC集群心跳仲裁机制

weixin_42018955的博客 1672

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Oracle RAC/Clusterware 多种心跳heartbeat机制介绍 RAC超时机制分析

ORACLE RAC中最主要存在2种clusterware集群件心跳 &  RAC超时机制分析: 1、Network Heartbeat 网络心跳 每秒发生一次; 10.2.0.4以后网络心跳超时misscount为60s,;11.2以后网络心跳超时misscount为30s。 2、Disk Heartbeat 磁盘心跳  每秒发生一次; 10.2.0.4以后 磁盘心跳超时DiskTi

Csong的专栏 3471

【Oracle-RAC】集群心跳机制

本地心跳:确定 ocssd.bin 进程的状态。网络心跳:确定集群节点的连通性。磁盘心跳:指定脑裂的解决方案。

weixin_43346403的博客 1012

关于Oracle实例之间的心跳,关于ORACLE RAC心跳问题的释疑

1、rac心跳的作用:检测集群节点间的网络健康状态,还可用做缓存同步刷新及全局资源维护。在grid control出现后还传输数据块,其内联数据通信量比较大,通常是千兆网,当然使用万兆更好。2、rac心跳能否用直连网线?直连网线限制RAC至两节点,另外直连网线不稳定,由此造成的BUG和技术问题,ORACLE不提供相应的技术支持。具体看ORACLE官方解释:RAC: Frequently Asked...

weixin_35361584的博客 778

oracle rac心跳机制_详解RAC集群中cache fushion原理

概念有朋友问了我关于RAC的缓存融合方面,想了下头条好像还没发出来,这里总结下这方面内容。要了解 RAC 工作原理的中心,需要知道 Cache Fusion 这个重要的概念,要发挥 Cache Fusion 的作用,要有一个前提条件,那就是互联网络的速度要比访问磁盘的速度要快。否则,没有引入 Cache Fusion 的意义。 简单地说,缓存融合就是把Oracle RAC数据库中所有数据库缓存作为...

weixin_39553753的博客 376

【RAC】Oracle集群心跳及其参数misscount/disktimeout/reboottime

Oracle 集群心跳及其参数misscount/disktimeout/reboottime 在OracleRAC中,可以从多个层次,多个不同的机制来检...

小麦苗DBA宝典 762
上一篇: Oracle 19c_ASM_单实例物理DG主库归档丢失使用主库基于SCN增量备份来恢复DG
下一篇: Oracle RAC OCR备份恢复
Lissen_Gan
博客等级 码龄13年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值