Oracle-RAC集群主机重启问题分析

news2024/11/24 17:07:53

问题背景:

在对一套两节点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实例也可以使用到巨页内存,但本案例,的确是需要去配置参数才能使用到大页内存​...

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年第八周总周结 | 开学倒数第一周

为什么要做周总结&#xff1f; 1.避免跳相似的坑 2.客观了解上周学习进度并反思&#xff0c;制定可完成的下周规划 一、上周存在问题 发现自己反复犯同样问题&#xff0c;不想反思就不会意识到。总想以面带点的学习&#xff0c;实际上却在原地踏步。问题导向使用ChatGPT&#…

目标检测:DETR详解

1. 概述 DETR: End-to-End Object Detection with Transformers, DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,是Transformer在目标检测的开山之作 – DEtection TRansformer。 相比于传统的Faster-rcnn,yolo系列,DETR有以下几个优点:1).无需…

微信实时音视频通话数据流分析

一、实时音视频的架构 实时音视频通信架构主要包括P2P、SFU、MCU三种方式&#xff0c;其中点对点通信通常以P2P优先&#xff0c;P2P走不通的场景再借助于SFU/MCU。 P2P方式&#xff0c;终端之间点对点的相互收发数据流&#xff0c;音视频流不经过服务器&#xff1b; SFU是端侧…

scrapy下载图片

&#x1f431; 个人主页&#xff1a;莎萌玩家&#x1f64b;‍♂️ 作者简介&#xff1a;全栈领域新星创作者、专注于全栈各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01;&#x1f4ab;系列专栏&#xff1a;网络爬虫、WEB全栈开发&#x1f4e2; 资料…

二叉树的后序遍历-java递归+非递归-力扣145双百方案

一、题目描述给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。示例 1&#xff1a;输入&#xff1a;root [1,null,2,3]输出&#xff1a;[3,2,1]示例 2&#xff1a;输入&#xff1a;root []输出&#xff1a;[]示例 3&#xff1a;输入&#xff1a;root [1]…

使用jenkins实现自动化部署springboot应用

1. 前置准备 这里代码仓库使用gitlab。在介绍如何通过gitlab和jenkins进行自动化部署之前&#xff0c;需要先安装完成gitlab以及jenkins。两种程序的安装方式以及相关配置可以参看以下内容&#xff1a; linux中安装gitlab&#xff1a;linux安装极狐gitlab linux中安装jenki…

Objective-C description 自定义对象的打印格式/输出的字符串 类似于Java 中的 toString 方法

总目录 iOS开发笔记目录 从一无所知到入门 文章目录IntroNSObject 源码测试类截图测试代码输出Intro 在 Java 中&#xff0c;对于自定义类一般会重写集成自Object类的toString方法&#xff0c;这样在打印该类的对象时&#xff0c;打印出的字符串就是我们在 toString() 方法中返…

【Vue3源码】第六章 computed的实现

【Vue3源码】第六章 computed的实现 上一章节我们实现了 ref 及其它配套的isRef、unRef 和 proxyRefs API。这一章开始实现computed计算属性。 认识computed 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。…

[架构之路-121]-《软考-系统架构设计师》-计算机体系结构 -3-汇编语言与ARM系统的初始化

第9章 计算机体系结构 第1-6节 参考前文第7节 ARM汇编语言7.1 程序框架&#xff08;1&#xff09;数据段Data初始化的数据&#xff1a; 初始的全局变量未初始化的数据&#xff1a;未初始化的全局变量堆heap&#xff1a;malloc的内存或数据栈stack&#xff1a;函数的局部变量&am…

ubuntu20系统+RobotiQ 2F-85夹爪+Ros+VMware配置

文章目录环境说明Ros配置Vmware虚拟机串口通信配置运行节点并调试有关问题解决办法rosdep相关缺少ros有关的库与pymodbus相关参考环境说明 环境说明系统版本Ubuntu 20.04.4Ros版本noetic主机形式VMware虚拟机夹爪型号RobotiQ 2F-85 Ros配置 新建ros工作空间并进行初始化 mkdir…

Nginx配置web服务器及部署反向代理

Nginx配置web服务器及部署反向代理配置web服务器location语法部署反向代理代理转发配置web服务器 项目部署到linux上的静态文件代理给Nginx处理。当访问服务器IP时&#xff0c;可以自动返回静态文件主页。 主配置文件中server块对应的次配置include /etc/nginx/conf.d/*.conf…

ESP-01S烧录MQTT固件连接阿里云

烧录MQTT固件 资源下载包 用到的所有烧录攻击和固件都放百度云链接了 提取码&#xff1a;qwlo 烧录固件 淘宝上10块钱左右一个CH340C下载烧录器ESP8266的就可以了。 连接好硬件打开ESPFlashDownloadTool_v3.6.2.2.exe软件&#xff08;记得放到英文目录下不然可能打不开&a…

windows服务编程

文章目录前言方案一&#xff1a;服务程序方案二&#xff1a;后台程序对比windows服务编程windows服务控制附录 - 完整代码前言 在linux中&#xff0c;如果需要一个程序在后台持续提供服务&#xff0c;我们一般会使用守护进程。 守护进程(daemon)是生存期长的一种进程。它们常…

Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新

导读Canonical近日为所有支持的Ubuntu LTS系统发布了新的Linux内核更新&#xff0c;以解决总共19个安全漏洞。新的Ubuntu内核更新仅适用于长期支持的Ubuntu系统&#xff0c;包括Ubuntu 22.04 LTS&#xff08;Jammy Jellyfish&#xff09;、Ubuntu 20.04 LTS&#xff08;Focal F…

需求:节目上传至MINIO后,使用mqtt进行上报

需求&#xff1a;节目上传至MINIO后&#xff0c;使用mqtt进行上报 环境准备 文件管理平台&#xff1a;首先需要使用minio搭建属于自己的对象存储&#xff08;此步骤跳过&#xff09; 通信方式&#xff1a;MQTT方式&#xff0c;客户端测试工具&#xff1a;MQTTX&#xff08;ht…

AI - stable-diffusion(AI绘画)的搭建与使用

最近 AI 火的一塌糊涂&#xff0c;除了 ChatGPT 以外&#xff0c;AI 绘画领域也有很大的进步&#xff0c;以下几张图片都是 AI 绘制的&#xff0c;你能看出来么&#xff1f; 一、环境搭建 上面的效果图其实是使用了开源的 AI 绘画项目 stable-diffusion 绘制的&#xff0c;这是…

《MySQL学习》 表中随机取记录的方式

一.初始化测试表 创建表 words CREATE TABLE words ( id int(11) NOT NULL AUTO_INCREMENT, word varchar(64) DEFAULT NULL, PRIMARY KEY (id)) ENGINEInnoDB;插入测试数据 create procedure idata()begin declare i int; set i 0; while i<10000 do insert into words…

【计算机网络】TCP的可靠性传输机制和常见配置讲解

文章目录1.TCP的可靠性传输机制2.TCP的传输优化机制 Nagle算法和延迟确认3.Linux服务器常见网络内核参数配置4. Linux服务器生产环境常见问题1.TCP的可靠性传输机制 TCP的可靠性传输机制 ACK机制 接收方收到TCP 数据包&#xff0c;要响应一个确认消息 acknowledgement&#xff…

Jinja2----------模板渲染、模板访问对象属性

目录 1.Jinja2 1.简介 2.Jinja2模板 2.模板渲染 app.py templates/index.html templates/blog_detail.html 效果 3.模板访问对象属性 app.py templates/index.html 效果 1.Jinja2 1.简介 Jinja2是Python下一个被广泛应用的模版引擎&#xff0c;他的设计思想来…

k8s-Pod基础

文章目录一、资源限制二、Pod 的两种使用方式三、Pod 资源共享四、底层容器Pause1、Pause共享资源1.1 网络1.2 存储1.3 小结2、Pause主要功能3、Pod 与 Pause 结构的设计初衷五、Pod容器的分类1、基础容器&#xff08;infrastructure container&#xff09;2、初始化容器&#…