Oracle-RAC集群主机重启问题分析
问题背景:
在对一套两节点Oracle RAC19.18集群进行部署时,出现启动数据库实例就会出现主机出现重启的情况,检查发现主机重启是由于节点集群被驱逐导致。
问题:
两节点Oracle RAC19.18集群,启动数据库实例会导致主机出现重启。
问题分析:
主机多次出现重启,拿最近一次节点一的重启时间2023-02-23 14:24进行分析
首先查看节点一主机的日志/var/log/messages,只有主机14:24:00的启动日志,除此以外没有明显的错误信息,主机日志没有提供有价值的信息。
查看节点一的集群的alert日志,在14:19:04出现节点一被节点二驱逐的信息this node was evicted by node 2以及出现reboot advisory message text:oracssdagent,这里我们可以确认主机重启的原因是由于节点一被驱逐所导致。
在节点二的集群alert日志,可以看到14:18:53节点二ASM发起kill节点一成员ASM的信息Member kill issued by PID for 1members,group DB:+ASM。
在14:19:03升级为节点驱逐,节点二发起节点一驱逐"Member kill issued by node 2 is being escalated to evict node 1 。
查看节点一,节点二的ocssd日志ocssd.trc,进一步分析被驱逐的原因,
节点一在14:15:29开始出现检查gipc超时的信息gipcretTimeout。
节点一在14:18:48ocssd出现进程终止Death被隔离以及gipc网络断开的报错。
节点二在14:18:53发起了kill member ASM的操作Kill requested for group DB+ASM。
节点二由于kill member的操作没有在规定时间内完成升级,在14:19:03升级为节点驱逐 node kill。
节点一的ocssd日志显示,在14:19:04,在节点一执行的驱逐操作都出现异常abort,驱逐是通过异常终止的方式。
从节点二的ocssd日志来看,直到14:19:30驱逐节点一的操作还没完成node(1) exceeded graceful shutdown,并且由于配置IPMI管理员用户,IPMI-kill管理口登陆主机的方式进行重启也没法进行Node kill could not beperformed. Admin or connection validation failed。
直到14:19:31,节点一的cssagent/cssmonit监控不到ocssd的本地心跳,发起了主机重启,整个节点驱逐才结束。
所以,整个对节点一的驱逐过程,一开始是从节点二的ASM发起的成员驱逐member kill,由于member kill没有在规定时间内完成,升级为节点驱逐node kill,节点驱逐最终触发了节点一的主机重启,驱逐之前集群的ocssd的网络,存储以及本地心跳正确,可能存在问题的地方在发起驱逐的ASM实例以及gipc进程。
接下来,分析ASM实例的alert日志以及trc文件
节点一ASM的alert日志,在14:18:33出现节点二的驱逐信息Received an instance abort message from instance 2,除此以外没有明显的异常信息。
节点二ASM的alert日志,可以发现14:17:58在节点二LMD与节点一的通信出现问题Communications reconfiguration: instance_number 1 from LMD0。
节点二14:18:33发起了实例驱逐Evicting instance 1 from cluster。
节点二查看LMD的进程trc文件,出现等待节点一ACK返回超时。
问题时间段节点一并没有产生的LMD,LMON日志,只能从LMS进程去分析是否存在其他问题,LMS进程的日志显示出现调用时间过长的信息GSIPC:LOOP: long elapsed time 80092 us,进程可能存在资源不够的问题。
接下来分析节点一的GIPC进程日志,发现存在异常的地方缺失了14:14:47-14:24:54日志,分析到这里,结合之前gipc进程超时、LMD进程超时、进程日志写丢失,严重怀疑操作系统的资源存在问题。
查看问题时间段的OSW监控信息,发现存在内存耗尽的情况,可以看到从14:10:21的剩余内存394G到最后一次记录14:14:22的剩余内存29G,平均每分钟使用内存70G+(这个时间段正在启动数据库实例),按照这个内存使用在14:15分之后主机的内存已经耗尽,这个内存耗尽时间与问题发生时间(14:15:29~14:19:30)一致。
分析主机内存耗尽的原因,当前主机的内存配置为1TB,实例的SGA+PGA内存为650G,其中SGA内存占450G,这个内存配置正常情况下内存还是足够的充裕的。
查看内存的配置情况,发现配置的600GB大页内存完全没有被数据库实例所使用,也就是说实例启动的SGA 450G内存全初始化到非大页内存(424G)里面,所以导致剩余的内存被耗尽。
问题原因:
综合上述的分析信息,我们可以确认RAC集群主机重启的原因为:
1 集群节点一被节点二驱逐引发了节点一的ocssd进程异常终止,导致ocssd监控进程cssagent/cssmonit监控不到ocssd的本地心跳,触发了主机重启。
2 集群节点二驱逐节点一的原因为,节点一的主机内存耗尽引发集群GIPC,LMD进程异常,导致节点一无法正常响应节点二的通信,触发了节点驱逐。
3 节点一主机内存耗尽的原因为,数据库的大页内存没有被使用,导致数据库实例的SGA内存全初始化到非大页内存里面,导致剩余的内存被耗尽。
问题解决:
查看用户大页内存的配置/etc/security/limits.conf,oracle用户当前配置memlock并没有问题。
重启主机以及数据库实例,大页内存也没有得到使用,之后在MOS上查到大页内存未被使用的文章Not Able To Start The Database, fails with ORA-27125: unable to create shared memory segment (Doc ID 2242978.1)
文章里面说到大页内存有可能需要配置操作系统权限来创建部分共享大页,通过为Oracle用户配置参数vm.hugetlb_shm_group=<gid>以分配权限。
为Oracle用户配置创建大页内存权限后,大页内存终于被实例加载使用,此后,集群主机重启问题再也没有发生,问题得到了解决。
---在/etc/sysctl.conf里面配置
vm.hugetlb_shm_group=54321
最后,还剩下一点待解决的疑问,那就是hugetlb_shm_group参数是否一定需要配置,因为在其他服务器上,通常不需要单独去设置hugetlb_shm_group参数,Oracle实例也可以使用到巨页内存,但本案例,的确是需要去配置参数才能使用到大页内存...
相关文章:

Oracle-RAC集群主机重启问题分析
问题背景: 在对一套两节点Oracle RAC19.18集群进行部署时,出现启动数据库实例就会出现主机出现重启的情况,检查发现主机重启是由于节点集群被驱逐导致。 问题: 两节点Oracle RAC19.18集群,启动数据库实例会导致主机出现重启。 问题分析: 主机多次出现…...

Python每日一练(20230227)
目录 1. 路径交叉 ★★★ 2. 缺失的第一个正数 ★★★ 3. 寻找两个正序数组的中位数 ★★★ 附录 散列表 基本概念 常用方法 1. 路径交叉 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移…...
Scratch少儿编程案例-算法练习-存款收益计算
专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

【Linux驱动开发100问】Linux驱动开发工程师在面试中常被问到的问题汇总
🥇今日学习目标:什么是Kconfig?如何使用Kconfig? 🤵♂️ 创作者:JamesBin ⏰预计时间:10分钟 🎉个人主页:嵌入式悦翔园个人主页 🍁专栏介绍:Lin…...

每日学术速递2.27
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.FiTs: Fine-grained Two-stage Training for Knowledge-aware Question Answering 标题:FiTs:用于知识感知问答的细粒度两阶段训练 作者:Qichen…...

【数据库系统概论】基础知识总结
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
简单移动平均在量化中的应用(附Python实战代码)
在大多数金融产品的投资过程中,均线系统都是很重要的投资参考。一般来说,均线可以近似理解为某段时间内成交筹码的均价,它往往能帮助我们找到合适的支撑位和压力位。随着各种技术流派以及统计学的发展,从简单移动平均中逐渐衍生出了更多的均线计算方式,比如指数移动平均、…...

ChatGPT提高你日常工作的五个特点,以及如何使用它来提高代码质量
ChatGPT已经完全改变了代码开发模式。然而,大多数软件开发者和数据专家们仍然不使用ChatGPT来完善——并简化他们的工作。 这就是我们在这里列出提升日常工作效率和质量的5个不同的特点的原因。 让我们一起来看看在日常工作中如何使用他们。 警告:不要…...
spark datasourceV1和v2
datasourceV2 一文理解 Apache Spark DataSource V2 诞生背景及入门实战 https://zhuanlan.zhihu.com/p/83006243 2.3 Data source API v2 https://issues.apache.org/jira/browse/SPARK-15689 Because of the above limitations/issues, the built-in data source impleme…...

10种聚类算法的完整python操作示例
大家好,聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系…...
构建合作伙伴生态系统刻不容缓
合作伙伴关系管理(PRM)系统是否已死?向合作伙伴生态系统的转变将如何改变我们未来管理合作伙伴计划的方式? 自PC革命以来,间接销售和渠道营销一直普遍存在于技术领域,通过其他公司的销售团队和人脉来增加销售,是一种明…...
剑指 Offer 55 - I. 二叉树的深度(java解题)
剑指 Offer 55 - I. 二叉树的深度(java解题)1. 题目2. 解题思路3. 数据类型功能函数总结4. java代码1. 题目 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径&a…...

威胁行为者将旧漏洞武器化以发起勒索软件攻击
勒索软件运营商比以往任何时候都更加依赖未打补丁的系统来获得对受害者网络的初始访问权限。 一份新报告显示,攻击者正在互联网和暗网中积极搜索可用于勒索软件攻击的旧漏洞和已知漏洞。 其中许多缺陷已存在多年,对尚未修补或更新易受攻击系统的组织构…...
2023北京健博会/第十届中国国际大健康产博览会
China-DJK北京健博会,立足北京打造国内外大健康产业快速融合发展平台; 大健康时代:20年前没有健康产业,如今健康产业成了全球经济中唯“不缩水”的行业,早已被国际经济学界确定为“无限广阔的兆亿产业”。据机构数据&…...

Python学习笔记之环境搭建
Python学习笔记之环境搭建1. 下载Python2. Windows 安装最新Python3. Linux 安装最新PythonPython是一种编程语言,可以让您更快地工作并更有效地集成系统。 您可以学习使用Python,并立即看到生产力的提高和维护成本的降低。 Python是荷兰程序员吉多范罗苏…...

死锁的总结
哲学家死锁造成的原因:我有你需要的,但你已经有了 饥饿与死锁的区别 死锁一旦发生一定又饥饿现象,但是饥饿现象产生不一定是死锁 历史上对于死锁的声音 死锁的方案 前面两个都是不允许死锁出现 前面都是概念性的东西 后面我们研究如何破坏…...

强化学习RL 01~ 数学基础
目录 RL理解要点 1. RL数学基础 1.1 Random Variable 随机变量 1.2 概率密度函数 Probability Density Function(PDF) 1.3 期望 Expectation 1.4 随机抽样 Random Sampling 2. RL术语 Terminologies 2.1 agent、state 和 action 2.2 策略 policy π 2.3 奖励 reward …...

Java的运算符
目录 一、什么是运算符 二、算术运算符 1. 基本四则运算符:加减乘除模( - * / %) 2、增量运算符 - * % 3. 自增/自减运算符 -- 三、关系运算符 四、 逻辑运算符(重点) 1. 逻辑与 && 2. 逻辑或 || 3. 逻辑非 ! 4. 短路求值…...

扫地机器人(蓝桥杯C/C++)
题目描述 小明公司的办公区有一条长长的走廊,由 NN 个方格区域组成,如下图所示。 走廊内部署了 KK 台扫地机器人,其中第 ii 台在第 A_iAi 个方格区域中。已知扫地机器人每分钟可以移动到左右相邻的方格中,并将该区域清扫干净。…...
如何理解API?API 是如何工作的?(5分钟诠释)
大家可能最近经常听到 API 这个概念,那什么是API,它又有什么特点和好处呢? wiki 百科镇楼 …[APIs are] a set of subroutine definitions, protocols, and tools for building application software. In general terms, it’s a set of cle…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...