前言:
近期处理了一起由于opatchauto自动安装补丁失败导致的RAC集群异常问题,用户通过opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动。
经过分析,确认集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误,而opatchauto失败的原因是由于补丁包的权限问题所导致。
问题:
opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动
---集群启动异常
[root@rac2 Desktop]# /oracle/app/grid_home/bin/crsctl check crs
CRS-4639: Could not contact Oracle High Availability Services
[root@rac2 Desktop]# /oracle/app/grid_home/bin/crsctl start crs
CLSU-00105: operating system interface has reported an internal failure
CLSU-00103: error location: canexec2
CLSU-00104: additional error information: no exe permission, file [/oracle/app/grid_home/bin/ohasd]
问题原因:
-
集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误
-
opatchauto失败的原因是由于补丁包的权限问题所导致
问题分析:
查看报错为执行文件ohasd文件权限,问题节点的属主为grid,而正常的节点为root
[root@rac2 Desktop]# ls -l /oracle/app/grid_home/bin/ohasd
-rwxr----- 1 grid oinstall 11402 Jul 23 2018 /oracle/app/grid_home/bin/ohasd
对比其他节点的ohasd文件权限,可以发现
---正常节点权限
[root@rac1 Desktop]# ls -l /oracle/app/grid_home/bin/ohasd.bin
-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的执行文件权限产生错误,引发了补丁安装失败后,集群的启动异常
---12c opatchauto的大致步骤,
1 执行crs -prepatch,这一步会关闭数据库集群,unlink CRS软件的库文件并修改文件的权限
2 执行rdbms -prepatch unlink rdbms软件的库文件并修改文件的权限
3 RDBM软件的ORACLE_HOME 安装补丁
4 执行rdbms -postpatch link rdbms软件的库文件并修改文件的权限
5 crs软件的ORACLE_HOME 安装补丁
6 执行rootadd_rdbms.sh 修改rdbms软件的文件权限
7 执行crs -postpatch, link CRS软件的库文件并修改为正常的文件权限,启动数据库集群
8 datapatch -verbose数据库应用数据字典(只有最后一个节点执行opatchauto 会进行)
继续检查opatchauto失败的原因,可以发现在执行从补丁包里面拷贝/tmp/33583921/33678030/files/bin/ocrcheck.bin文件时产生错误,根据经验,这种情况通常为权限问题导致
检查补丁包的权限,权限为700,属主为ORACLE.OINSTALL,而这个权限对于grid用户来说是没有操作权限的,所以会导致文件拷贝失败
注意:即使opatchauto是用root用户执行,但实际在进行crs的软件补丁应用时,是使用grid用户权限的
对补丁包授予777的权限,再重新执行自动安装补丁命令
---该命令会从上次失败的步骤开始进行补丁安装,而不是从头安装补丁
opatchauto resume
问题修复,补丁顺利安装完成
RAC集群也恢复正常
[grid@rac2 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
总结:
opatchauto进行RAC集群补丁升级,在升级的过程中出现报错失败并且集群也无法再重新启动,经过分析,确认集群异常的原因为opatchauto安装补丁失败引发执行文件权限产生错误,而opatchauto失败的原因是由于补丁包的权限问题所导致。
问题修复:
修改补丁安装包的权限为777,确保grid用户有权限访问,opatchauto顺利安装完成