亲爱滴老铁们,本萎大湿又来了,这次咱唠唠oracle一体机exadata。
在实施Exadata的GIRU时报Error: Could not find or load main class #,补丁升级失败。找不到或无法加载主类?忘了告诉伙伴儿们,本萎大湿其实是JAVA开发出身,看到此报错的第一反应是不是补丁目录搞错了,或者环境变量没设置?再三确认后,哥的姿势没问题啊,那到底是啥子原因导致始终不能出现期待的画面?
本套二分之一配exadata环境:
ORACLE一体机多个计算节点,多个存储节点 数据库版本:12.2.0.1 |
一、十万手速的查看日志,发现最开始做补丁冲突分析时就已经报Error: Could not find or load main class,显示在DB HOME做分析时就已失败:
二、顺藤摸瓜,是不是DB HOME补丁冲突了?接下来我们对GI HOME及DB HOME都做了补丁冲突分析,确认均正常。GI HOME补丁冲突分析截图:
DB HOME补丁冲突分析截图:
三、既然补丁都没冲突,尝试直接打看看,结果还是报错。
四、既然自动打不上该补丁,那咱参照ID 2246888.1尝试手动来打。
1)首先把实例停掉 su - oracle sqlplus as sysdba alter system switch logfile; alter system checkpoint; shutdown immediate; 2)登录root用户运行脚本 su - root /u01/app/12.2.0.1/grid/crs/install/rootcrs.sh -prepatch 3)GI HOME打补丁 su - grid /u01/app/12.2.0.1/grid/OPatch/opatch apply -oh u01/app/12.2.0.1/grid -local u01/soft/opatch_20200610/30920127/30882603 /u01/app/12.2.0.1/grid/OPatch/opatch apply -oh u01/app/12.2.0.1/grid -local u01/soft/opatch_20200610/30920127/30869447 /u01/app/12.2.0.1/grid/OPatch/opatch apply -oh u01/app/12.2.0.1/grid -local u01/soft/opatch_20200610/30920127/26839277 /u01/app/12.2.0.1/grid/OPatch/opatch apply -oh u01/app/12.2.0.1/grid -local /u01/soft/opatch_20200610/30920127/30886680 /u01/app/12.2.0.1/grid/OPatch/opatch apply -oh /u01/app/12.2.0.1/grid -local /u01/soft/opatch_20200610/30920127/30888810 4)DB HOME打补丁 su - oracle /u01/soft/opatch_20200610/30920127/30882603/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/12.2.0.1/dbhome_1 /u01/app/oracle/product/12.2.0.1/dbhome_1/OPatch/opatch apply -oh /u01/app/oracle/product/12.2.0.1/dbhome_1 -local /u01/soft/opatch_20200610/30920127/30882603 /u01/app/oracle/product/12.2.0.1/dbhome_1/OPatch/opatch apply -oh /u01/app/oracle/product/12.2.0.1/dbhome_1 -local /u01/soft/opatch_20200610/30920127/30886680 /u01/soft/opatch_20200610/30920127/30882603/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/12.2.0.1/dbhome_1 5)运行post脚本 su - root /u01/app/12.2.0.1/grid/rdbms/install/rootadd_rdbms.sh /u01/app/12.2.0.1/grid/crs/install/rootcrs.sh -postpatch |
通过以上手动方式打补丁,除碰到一个权限报错,补丁升级顺利完成。
权限报错截图:
通过报错日志我们发现/u01/app/oracle/product/12.2.0.1/dbhome_1/bin/extjobO文件chmod失败。MOS了一下,ID 2265726.1介绍该报错可忽略
但为了防止下次打补丁继续报错,我们将该文件权限修改成其他未报错节点文件一致的权限。
总结:
本次打GIRU由于需要在规定的时间内完成,在没找到报错最终原因的情况下,我们找到了另外一种方式完成了补丁升级,这不失为一个高效的workround。毕竟条条大路通罗马,何必单恋一枝花。后续继续分析Could not find or load main class报错,原因找到后再和各位看官们分享哈,咱们下回见。