• Oracle-opatchauto自动安装补丁失败导致RAC集群异常问题


    前言:

            近期处理了一起由于opatchauto自动安装补丁失败导致的RAC集群异常问题,用户通过opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动。

           经过分析,确认集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误,而opatchauto失败的原因是由于补丁包的权限问题所导致。

    问题:

    opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动

    1. ---集群启动异常
    2. [root@rac2 Desktop]# /oracle/app/grid_home/bin/crsctl check crs
    3. CRS-4639: Could not contact Oracle High Availability Services
    4. [root@rac2 Desktop]# /oracle/app/grid_home/bin/crsctl start crs
    5. CLSU-00105: operating system interface has reported an internal failure
    6. CLSU-00103: error location: canexec2
    7. CLSU-00104: additional error information: no exe permission, file [/oracle/app/grid_home/bin/ohasd]

    问题原因:

    • 集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误

    • opatchauto失败的原因是由于补丁包的权限问题所导致

    问题分析:

    查看报错为执行文件ohasd文件权限,问题节点的属主为grid,而正常的节点为root

    1. [root@rac2 Desktop]# ls -l /oracle/app/grid_home/bin/ohasd
    2. -rwxr----- 1 grid oinstall 11402 Jul 23 2018 /oracle/app/grid_home/bin/ohasd

    对比其他节点的ohasd文件权限,可以发现

    1. ---正常节点权限
    2. [root@rac1 Desktop]# ls -l /oracle/app/grid_home/bin/ohasd.bin
    3. -rwxr----- 1 root oinstall 185059583 Jan 15 2022 /oracle/app/grid_home/bin/ohasd.bin

    查看opatchauto的补丁安装日志$ORACLE_HOME/cfgtoollogs/opatchauto

    opatchauto自动打补丁已经安装完成rdbms的$ORACLE_HOME补丁,并执行完成rdbms的postpatch

    再准备对crs的$ORACLE_HOME安装补丁时,发生了配置错误导致opatchauto安装失败

    由于opatchauto的命令执行失败,只执行了1-4的步骤,没有执行5-8步骤,导致crs的执行文件权限产生错误,引发了补丁安装失败后,集群的启动异常

    1. ---12c opatchauto的大致步骤,
    2. 1 执行crs -prepatch,这一步会关闭数据库集群,unlink CRS软件的库文件并修改文件的权限
    3. 2 执行rdbms -prepatch unlink rdbms软件的库文件并修改文件的权限
    4. 3 RDBM软件的ORACLE_HOME 安装补丁
    5. 4 执行rdbms -postpatch link rdbms软件的库文件并修改文件的权限
    6. 5 crs软件的ORACLE_HOME 安装补丁
    7. 6 执行rootadd_rdbms.sh 修改rdbms软件的文件权限
    8. 7 执行crs -postpatch, link CRS软件的库文件并修改为正常的文件权限,启动数据库集群
    9. 8 datapatch -verbose数据库应用数据字典(只有最后一个节点执行opatchauto 会进行)

    继续检查opatchauto失败的原因,可以发现在执行从补丁包里面拷贝/tmp/33583921/33678030/files/bin/ocrcheck.bin文件时产生错误,根据经验,这种情况通常为权限问题导致

    检查补丁包的权限,权限为700,属主为ORACLE.OINSTALL,而这个权限对于grid用户来说是没有操作权限的,所以会导致文件拷贝失败

    注意:即使opatchauto是用root用户执行,但实际在进行crs的软件补丁应用时,是使用grid用户权限的

    对补丁包授予777的权限,再重新执行自动安装补丁命令

    1. ---该命令会从上次失败的步骤开始进行补丁安装,而不是从头安装补丁
    2. opatchauto resume

    问题修复,补丁顺利安装完成

    RAC集群也恢复正常

    1. [grid@rac2 ~]$ crsctl check crs
    2. CRS-4638: Oracle High Availability Services is online
    3. CRS-4537: Cluster Ready Services is online
    4. CRS-4529: Cluster Synchronization Services is online
    5. CRS-4533: Event Manager is online

    总结:

    opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动,经过分析,确认集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误,而opatchauto失败的原因是由于补丁包的权限问题所导致。

    问题修复:

    修改补丁安装包的权限为777,确保grid用户有权限访问,opatchauto顺利安装完成

  • 相关阅读:
    一个rar压缩包如何分成三个?
    如何在 2022 年为 Web 应用程序选择技术堆栈
    创建SpringBoot项目
    React面试:谈谈虚拟DOM,Diff算法与Key机制
    postman切换成黑色主题
    Nand Flash基本认识
    Filter(过滤器)Intercerptor(拦截器)
    基于 SPICE 协议的硬编推流整合方案在云游戏中的应用
    【个人简历】如何让人眼前一亮?简约大方(附模板)
    Go语言学习笔记——日期时间处理库Carbon
  • 原文地址:https://blog.csdn.net/sinat_36757755/article/details/127856924