资讯专栏INFORMATION COLUMN

RAC补丁日常更新成功反遇异常处理

IT那活儿 / 3175人阅读
RAC补丁日常更新成功反遇异常处理

点击上方“IT那活儿”,关注后了解更多精彩内容!!!




现象描述


最近在搭建4套双RAC准备测试ADG时,所有RAC应用完最新补丁后,使用“crsctl query crs softwarepatch”命令核查grid的补丁号,发现其中一套RAC的两个节点的结果不一样。

节点1: 
Oracle Clusterware patch level on node node21 is [92621972]
节点2: 
Oracle Clusterware patch level on node node22 is [1237854203]
通常遇到这种问题时,通常会有以下几种原因:
  1. 各节点补丁更新不一致;
  2. 补丁更新时未替换opatch;
  3. 补丁未在所有节点上应用;
  4. OCR保存了未更新的补丁详细信息。
上述几种现象比较好处理,第1种~第3种现象,重新应用补丁,保持两个节点的补丁一致即可解决,第4种现象再次执行一次rootcrs.sh -prepatch和rootcrs.sh -postpatch也能处理。



跟踪排查



上面的几种解决方案都试了一遍,再次检查使用“crsctl query crs softwarepatch”命令核查grid的补丁号,仍然是如下结果:
节点1: 
Oracle Clusterware patch level on node node21 is [92621972]
节点2: 
Oracle Clusterware patch level on node node22 is [1237854203]
那就用kfod再检查下ASM里记录的patch详细信息。
节点1的输出结果:
[root@node21 ~]# /u01/app/19.3.0/grid/bin/kfod op=patches
---------------
List of Patches
===============
29401763
29517247
29585399
32585572
33192793
33208107
33208123
33239955
[root@node21 ~]# /u01/app/19.3.0/grid/bin/kfod op=PATCHLVL
---------------
Current Patch level
===================
92621972
节点2的输出结果:
[root@node22 ~]# /u01/app/19.3.0/grid/bin/kfod op=patches
---------------
List of Patches
===============
29401763
29517242
29517247
29585399
32585572
33192793
33208107
33208123
33239955
[root@node22 ~]# /u01/app/19.3.0/grid/bin/kfod op=PATCHLVL
---------------
Current Patch level
===================
1237854203


对比发现,原来节点2的ASM里记录的opatch信息多了一条记录:29517242,导致的两个节点的GI补丁号不一致。





解决方案



既然知道是多了一条记录,那就删了它吧!

step1 在节点2上执行打补丁应用脚本。
Root用户:
/u01/app/19.3.0/grid/crs/install/rootcrs.sh -prepatch
step2 使用kfod命令删除多的那一条patch信息。
Grid用户:
/u01/app/19.3.0/grid/bin/patchgencommit -rb 29517242
命令执行结果如下:
19
loading the appropriate library for linux
patchgensh19.so loaded succesfully.

Note: Successfully commited, created .s file with apply and recover patches
mv -f /u01/app/19.3.0/grid/lib/libasmclntsh19.so /u01/app/19.3.0/grid/lib/libasmclntsh19.so.bak
/usr/bin/as /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.s -o /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.o
/usr/bin/ar r /u01/app/19.3.0/grid/lib/libasmclnt19.a /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.o
/usr/bin/ar r /u01/app/19.3.0/grid/lib/libasmclntsh19.a /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.o
rm -f /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.o
rm -f /u01/app/19.3.0/grid/rdbms/lib/skgfpmi.s
make /u01/app/19.3.0/grid/lib/libasmclntsh19.so -f /u01/app/19.3.0/grid/rdbms/lib/ins_rdbms.mk
make[1]: Entering directory `/home/grid
rm -f /u01/app/19.3.0/grid/lib/libasmclntsh19.so
/u01/app/19.3.0/grid/bin/linkshlib /u01/app/19.3.0/grid/lib/libasmclntsh19.so /u01/app/19.3.0/grid/rdbms/lib/ins_rdbms.mk so ld_shlib LIBS
+ PATH=/bin:/usr/bin:/usr/ccs/bin
+ export PATH
+ lib=/u01/app/19.3.0/grid/lib/libasmclntsh19.so
+ makefile=/u01/app/19.3.0/grid/rdbms/lib/ins_rdbms.mk
+ so_ext=so
+ target=ld_shlib
++ basename /u01/app/19.3.0/grid/lib/libasmclntsh19.so .so
+ libname=libasmclntsh19
++ dirname /u01/app/19.3.0/grid/lib/libasmclntsh19.so
+ sodir=/u01/app/19.3.0/grid/lib
+ ardir=/u01/app/19.3.0/grid/lib/
+
[ var = ld_shlib ]
+ suffix=LIBS
+ var=
+
[ ! -f /u01/app/19.3.0/grid/lib/libasmclntsh19.a ]
+
[ != ]
+ make -f /u01/app/19.3.0/grid/rdbms/lib/ins_rdbms.mk ld_shlib _FULL_LIBNAME=/u01/app/19.3.0/grid/lib/libasmclntsh19.so _LIBNAME=libasmclntsh19 _LIBDIR=/u01/app/19.3.0/grid/lib/
_LIBNAME_LIBS=$(libasmcl
ntsh19LIBS) _LIBNAME_EXTRALIBS=$(libasmclntsh19EXTRALIBS)make[2]: Entering directory `/home/grid
/u01/app/19.3.0/grid/bin/orald -o /u01/app/19.3.0/grid/lib/libasmclntsh19.so -shared -z noexecstack -Wl,--disable-new-dtags -L/tmp/bootstraplib/ -L/u01/app/19.3.0/grid/lib/ -L/u01/app/19.3.0/grid/rdbms/l
ib/ -L/u01/app/19.3.0/grid/lib/stubs/ -Wl,--version-script=/u01/app/19.3.0/grid/rdbms/admin/libasmclntsh19.def -Wl,--whole-archive /u01/app/19.3.0/grid/lib/libasmclntsh19.a -Wl,--no-whole-archive `cat /u01/app/19.3.0/grid/lib/sysliblist` -Wl,-rpath,/u01/app/19.3.0/grid/lib -lm `cat /u01/app/19.3.0/grid/lib/sysliblist` -ldl -lm -L/u01/app/19.3.0/grid/lib -lircmake[2]: Leaving directory `/home/grid

make[1]: Leaving directory `/home/grid
make libasmclntsh19.so returned code 0


step3 在节点2执行补丁应用脚本。

Root用户:
/u01/app/19.3.0/grid/rdbms/install/rootadd_rdbms.sh
/u01/app/19.3.0/grid/crs/install/rootcrs.sh -postpatch
step4 再次使用“crsctl query crs softwarepatch”命令核查grid的补丁号,这次结果一致了。
节点1:
Oracle Clusterware patch level on node node21 is [92621972]
节点2:
Oracle Clusterware patch level on node node22 is [92621972]
完美解决,Perfect!



END



更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129739.html

相关文章

  • 集成安装之Oracle12C补丁升级数据字典更新报错处理

    集成安装之Oracle12C补丁升级数据字典更新报错处理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活儿 评论0 收藏795
  • Redux 进阶 - react 全家桶学习笔记(二)

    摘要:在函数式编程中,异步操作修改全局变量等与函数外部环境发生的交互叫做副作用通常认为这些操作是邪恶肮脏的,并且也是导致的源头。 注:这篇是17年1月的文章,搬运自本人 blog... https://github.com/BuptStEve/... 零、前言 在上一篇中介绍了 Redux 的各项基础 api。接着一步一步地介绍如何与 React 进行结合,并从引入过程中遇到的各个痛点引出 ...

    Godtoy 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<