Oracle-实例重启导致其他实例不可访问!

news2024/11/16 4:08:17

问题背景:

        用户报障生产一套11G的RAC集群,每个节点有5个数据库实例,其中一个实例由于ORA-00600错误引发实例异常重启,在该实例重启之后,同服务器上的其他4个实例均出现无法访问的情况,应用反馈出现ORA-12537连接不上报错问题。

        同时,数据库后台日志出现大量的ORA-27140、ORA-27300、ORA-27301、ORA-27302、ORA-27303报错。

ORA-27140: attach to post/wait facility failed

ORA-27300: OS system dependent operation:invalid_egid failed with status: 1

ORA-27301: OS failure message: Operation not permitted

ORA-27302: failure occurred at: skgpwinit6

ORA-27303: additional information: startup egid = 1001 (oinstall), current egid = 1006 (asmadmin)

        最后,用户通过重启节点4个实例才恢复正常。

问题分析:

        检查问题实例的重启时间,可以看到在18点08分35分-49秒期间实例发生了重启。

        重启之后,其他实例在18点09分开始陆续出现报错,从报错的信息中可以看到,由于数据库启动使用的用户组oinstall与当前用户组asmadmin不一致,导致数据库执行操作失败,这里用户组权限指的是执行程序$ORACLE_HOME/bin/oracle的权限。

        检查执行程序oracle的权限,可以看到程序文件权限为6751和oracle.asmadmin,这个权限是正确的,再看回报错内容信息ORA-27303: additional information: startup egid = 1001 (oinstall), current egid = 1006 (asmadmin),可以推测实例在启动的时候oracle程序是使用了oinstall属组一直正常运行,直到18点09分之后oracle程序的属组变成了现在的asmadmin,引发用户数组不一致的问题。

        从之前旧的trc文件属组,可以进一步确认之前实例启动的oracle程序属组为oracle。

        问题分析到这里,有两个问题需要进一步确认。谁将oracle程序的属组oinstall修改成asmadmin?与问题实例的重启有没有联系?这里,我们单从问题发生的时间线以及报错发生的时间点,可以判断oracle程序的属组变化与问题实例的重启操作存在关系的概率较大。

        接下来,分析问题实例的重启过程,由于实例的异常重启的,重新启库的过程是通过集群oracle_oraagent进程所拉起。检查oracle_oraagent的日志,在agent启动数据库的过程中,我们发现了一条关键的操作命令 /u01/app/grid/product /bin/setasmgidwrap oracle_binary_path

=/u01/app/oracle/product/bin/oracle,通过setasmgidwrap对oracle程序的权限进行修正,也就是问题实例异常关闭,重新启动的过程中,oracle_oraagent执行了命令setasmgidwrap对oracle程序的权限进行了修改,将oracle程序的属组oinstall修改为asmadmin,导致之前通过oinstall属组启动的其他实例属组出现不一致,数据库操作无法正常执行。

        在Oracle官方文档After Dbca Database Creation, Other Database Terminated With ORA-27300/ORA-27301/ORA-27302/ORA-27303 (Doc ID 2406287.1),描述了这一行为,在RAC集群环境,通过集群管理工具srvctl启动数据库实例,会更新oracle程序的属组为asm磁盘组的属组,确保两者属组一致。

问题复现测试:

        为进一步确认分析原因的正确性,我们在测试环境进行了复现测试。

        复现测试场景一:srvctl启动更新oracle程序属组。

        手动修改$ORACLE_HOME/bin/oracle的执行程序为oinstall数组

        通过startup方式启动数据库,数据库可以正常启动操作,oracle程序属组还是oinstall,只要oracle用户的属组里面有磁盘权限asmadmin组,就可以访问asm磁盘组,oracle程序属组为oinstall没影响。

        通过集群管理工具srvctl方式启动数据库,数据库可以正常启动操作,这里可以看到oracle程序会被自动修正为asmadmin。

        查看oracle_oraagent的trc日志,在srvctl启动过程中,会通过setasmgidwrap对oracle程序的权限进行修正,可以确认srvctl启动会修正oracle程序属组。

        复现测试场景二:实例重启影响其他实例问题复现。

        oracle执行程序设置为oinstall属组,通过startup方式启动两个实例test1和db11_1。

        通过kill -9模拟实例test1异常重启。

        test1异常重启之后,之前正常的实例db11_1无法正常访问,复现问题的报错ORA-27303: additional information: startup egid = 1000 (oinstall), current egid= 1001 (asmadmin)。

问题原因:

        1 数据库实例在问题发生之前,oracle程序使用错误的oinstall属组启动。

        2 问题实例异常重启之后,集群通过oracle_oraagent拉起实例,使用集群管理工具srvctl方式启动,启动过程会执行setasmgidwrap修正$ORACLE_HOME/bin/oracle 权限为正确的属组asmadmin。

        3 调整后的权限asmadmin与现有实例启动的oinstall权限不一致,导致产生ORA-27303用户属组不一致的报错,数据库无法正常访问。

问题建议:

        1 确保oracle执行程序的权限正确为6751和oracle:asmadmin。

        2 CRS/HAS环境,数据库实例的启动要通过集群工具srvctl进行管理,避免采用startup等手工管理方式。

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

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

相关文章

C++初识

这里会对一些内容进行简单的提起,后面会详细讲解 一、注释 作用:在代码中加入一些说明和解释,方便自己或其他人阅读代码 两种格式: 1、单行注释: // 描述信息 通常放在一行代码的上方,或者一条语句的末…

Java代码基础算法练习-删除空格-2024.04.15

任务描述: 请从键盘获取一串字符,然后实现删除字符串空格的操作。 任务要求: 代码示例: 这里提供两种方法 1.使用正则表达式(推荐) // 用正则表达式的方法 System.out.println("删除空格后的的字符…

嵌入式MCU BootLoader开发配置详细笔记教程

目录 一、BootLoader基础 二、BootLoader原理及配置 三、BootLoader程序 bootloader.h bootloader.c 四、Application1 用户程序 application1.h application1.c 五、Application2 用户程序 application2.h 六、程序运行效果 七、工程文件Demo 一、BootLoader基础 …

FRR-NET:用于弱光图像增强的快速重参数残差网络

很久之前写的文章,前两天才见刊。项目的具体代码因项目原因无法公布,我自己重新训练了一个版本(包含两类预训练模型),供初学者参考。本文主要为AB式创新。 文章链接:paper 代码链接:GitHub || …

使用脚本部署openstack平台

两台虚拟机,compute和controller 建议两台虚拟机都配置,内存4G,硬盘60G,网络要在虚拟机设置这里添加一个网络适配器,第一个是主机模式192.168.10.0,第二个是NAT模192.168.20.0, 可以在此处了解一…

vue源码解析——diff算法/双端比对/patchFlag/最长递增子序列

虚拟dom——virtual dom,提供一种简单js对象去代替复杂的 dom 对象,从而优化 dom 操作。virtual dom 是“解决过多的操作 dom 影响性能”的一种解决方案。virtual dom 很多时候都不是最优的操作,但它具有普适性,在效率、可维护性之…

C++ 之 【类与对象】从入门到精通一条龙服务 最终篇(static成员、友元、匿名对象。。。)

💴到用时方恨早,白首方悔挣的少 车到山前没有路,悬崖勒马勒不住 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、Static成员 1.概念 2.特性 三、友元 1.友元函数 2.友元类 四、内部类 五、匿名对象 六、…

【uniapp】vscode安装插件、ts校验、允许json文件注释

1、vscode安装的插件: uni-create-viewuni-hlperuniapp小程序扩展 2、ts校验 安装插件: pnpm i -D types/wechat-miniprogram uni-helper/uni-app-types配置tsconfig.json {"extends": "vue/tsconfig/tsconfig.json","compi…

向量 | vector;标量 | scalar;矩阵;张量

目录 什么是标量 什么是向量? 向量的3种表达方式 向量的矩阵表示 什么是矩阵 什么是张量 什么是标量 标量只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。 比如:重量、温度、长度、提及、时间、热量等都数据标量。

gzip,bzip2,xz,tar-读书笔记(九)

gzip 将文件进行压缩 在Linux系统中,gzip 是一个压缩和解压文件的命令工具。它使用LZ77压缩算法及霍夫曼编码(Huffman Coding)来压缩文件,通常用来减少文件的大小,以节约磁盘空间或减少网络传输的时间。 gzip 命令的…

SpringBoot集成JWT快速入门Demo

目录 1. 概述 2. JWT的请求流程 3. Session认证与JWT认证的区别 4 JWT优缺点 4.1 优点 4.2 缺点 5. 快速入门 5.1 创建工程 5.2 导入依赖 5.3 添加配置文件 5.4 添加Swagger2配置类 5.5 添加JWT工具类 5.6 添加entity、service、controller类 5.7 添加拦截器类 …

【Linux】CentOS 7安装后没有图形界面

专栏文章索引:Linux 有问题可私聊:QQ:3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.当前处于命令行界面,可以切换为图形界面 2.安装时没有安装图形界面,选择了Minimal Install 3.下…

【Linux】磁盘分区扩容到原有目录(LVM)

一、LVM基本组成 LVM(Logical Volume Manager,逻辑卷管理)逻辑卷管理器是负责管理物理卷、卷组和逻辑卷的软件层。它提供了创建、调整和管理这些组件的命令和工具,使得用户能够灵活地调整和管理磁盘空间。 1.物理卷(PV,Physical…

基于Springcloud可视化项目:智慧工地可视化大数据云平台源码

目录 技术架构 智慧工地系统在实际推行过程中遇到的问题 智慧工地接纳程度较低 基础设施条件有待完善 智慧工地整体生态尚未完善 智慧工地平台各功能模块 施工过程工信程息信管息理管模理块 人员管理模块 生产管理模块 技术管理模块 质量管理模块 安全管理模块 绿…

免费的 ChatGPT 网站(六个)

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、insCode二、讯飞星火三、豆包四、文心一言五、通义千问六、360智脑 现在智能…

关于GDAL计算图像坐标的几个问题

关于GDAL计算图像坐标的几个问题_gdal读取菱形四角点坐标-CSDN博客 这篇文章写的很好,讲清楚了图像行列号与图像点坐标(x,y)对应关系,以及图像行列号如何转为地理坐标的,转载一下做个备份。 1.关于GDAL计算图像坐标的…

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…

51单片机-独立按键模块

1. 独立按键控制LED状态 轻触按键实现原理&#xff1a;按下时&#xff0c;接通&#xff0c;通过金属弹片受力弹动来实现接通和断开。 松开按键 按下之后&#xff1a;就会被连接 同时按下K1和K2时&#xff0c;P2_0,接口所连LED灯才亮。 #include <REGX52.H> void ma…

【opencv】示例-travelsalesman.cpp 使用模拟退火算法求解旅行商问题

// 载入 OpenCV 的核心头文件 #include <opencv2/core.hpp> // 载入 OpenCV 的图像处理头文件 #include <opencv2/imgproc.hpp> // 载入 OpenCV 的高层GUI(图形用户界面)头文件 #include <opencv2/highgui.hpp> // 载入 OpenCV 的机器学习模块头文件 #includ…

Devin AI: The World’s First AI Software Engineer

Devin AI是Cognition AI团队推出的一款名为Devin的人工智能软件工程师&#xff0c;它被誉为世界上第一个完全自主的AI软件工程师。Devin AI在2024年3月12日发布&#xff0c;并在SWE-bench编码基准测试中设立了新的技术标杆。 Devin AI具备多项强大的能力&#xff0c;包括学习如…