
背景

前段时间踩坑哥在搞一套老系统的迁移,生产环境是11.2.0.3版本的Oracle 数据库,采用的双节点RAC架构,需要迁移至另一个数据中心,并且升级到11.2.0.4版本。经过和业务讨论,敲定的方案是前期搭建DataGuard用于数据同步,正式迁移时再把备库激活为主库,同时升级数据字典。不过在备库打最新PSU补丁时遇到了一点问题,这里记录下。

按照以往的经验,rac环境部署psu,一般可以采用auto模式,这种模式需要用opatch工具生成个ocm应答文件。2020年一季度后,oracle对新的psu补丁做了些改动,之后的补丁必须把opatch工具包升级到11.2.0.3.23+,但是新版本的opatch工具包却不再提供ocm脚本。万般无奈,只好采用全程手动模式逐个应用补丁。

应用补丁

关闭数据库
应用psu前需要关闭节点上所有数据库实例
srvctl stop database -d testdb
阅读补丁文件的readme描述,确认各个组件的版本
ocw:29938455DB PSU:31103343acfs:29509309
开始应用GI补丁
#root用户执行,注意unlock crs资源会关闭crs进程/u01/app/grid/11.2.0.4/ghome/crs/install/rootcrs.pl -unlock/u01/app/grid/11.2.0.4/ghome/crs/install/roothas.pl -unlock#grid用户执行/u01/app/grid/11.2.0.4/ghome/OPatch/opatch napply -oh u01/app/grid/11.2.0.4/ghome -local opt/GI_PSU_11.2.0.4.200714/31305209/29938455/u01/app/grid/11.2.0.4/ghome/OPatch/opatch napply -oh u01/app/grid/11.2.0.4/ghome -local opt/GI_PSU_11.2.0.4.200714/31305209/29509309/u01/app/grid/11.2.0.4/ghome/OPatch/opatch apply -oh u01/app/grid/11.2.0.4/ghome -local opt/GI_PSU_11.2.0.4.200714/31305209/31103343
应用database补丁
--oracle执行/opt/GI_PSU_11.2.0.4.200714/31305209/29938455/custom/server/29938455/custom/scripts/prepatch.sh -dbhome u01/app/oracle/product/11.2.0.4/dbhome_1/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch napply -oh u01/app/oracle/product/11.2.0.4/dbhome_1 -local opt/GI_PSU_11.2.0.4.200714/31305209/29938455/custom/server/29938455/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch apply -oh u01/app/oracle/product/11.2.0.4/dbhome_1 -local opt/GI_PSU_11.2.0.4.200714/31305209/31103343/opt/GI_PSU_11.2.0.4.200714/31305209/29938455/custom/server/29938455/custom/scripts/postpatch.sh -dbhome u01/app/oracle/product/11.2.0.4/dbhome_1
刷新参数配置
--root执行(两个节点全部打完上述补丁后再分别执行如下脚本,刷新参数配置)/u01/app/grid/11.2.0.4/ghome/rdbms/install/rootadd_rdbms.sh/u01/app/grid/11.2.0.4/ghome/crs/install/rootcrs.pl -patch/u01/app/grid/11.2.0.4/ghome/crs/install/roothas.pl -patch
启动实例
#启动GI#启动dbsrvctl start database -d testdb


回退补丁

如果应用补丁过程出现意外,或者其他原因需要回退补丁,MOS文档中同样给出了办法。
关闭数据库
应用psu前需要关闭节点上所有数据库实例
srvctl stop database -d testdb
unlock crs资源
--root执行/u01/app/grid/11.2.0.4/ghome/crs/install/rootcrs.pl -unlock/u01/app/grid/11.2.0.4/ghome/crs/install/roothas.pl -unlock
回滚GI补丁
--grid执行/u01/app/grid/11.2.0.4/ghome/OPatch/opatch rollback -local -id 29938455 -oh /u01/app/grid/11.2.0.4/ghome/u01/app/grid/11.2.0.4/ghome/OPatch/opatch rollback -local -id 29509309 -oh /u01/app/grid/11.2.0.4/ghome/u01/app/grid/11.2.0.4/ghome/OPatch/opatch rollback -local -id 31103343 -oh /u01/app/grid/11.2.0.4/ghome
回滚db补丁
--oracle执行/opt/GI_PSU_11.2.0.4.200714/31305209/29938455/custom/server/29938455/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/11.2.0.4/dbhome_1/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch rollback -local -id 29938455 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1/u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch rollback -local -id 31103343 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1/opt/GI_PSU_11.2.0.4.200714/31305209/29938455/custom/server/29938455/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/11.2.0.4/dbhome_1
回滚配置信息
--root/u01/app/grid/11.2.0.4/ghome/rdbms/install/rootadd_rdbms.sh/u01/app/grid/11.2.0.4/ghome/crs/install/rootcrs.pl -patch/u01/app/grid/11.2.0.4/ghome/crs/install/roothas.pl -patch
启动实例
#启动GI#启动dbsrvctl start database -d testdb
至此,手动应用/回滚psu补丁流程已经结束,对比传统auto模式可以发现,这个流程复杂太多,尤其在自动化上可能会面临一些麻烦。希望后续opatch工具包能够更新一下,当然这个希望比较渺茫,毕竟11.2.0.4版本已经存在太长时间了。
MOS文章参考:
How to Create an OCM Response file to Apply a Patch in Silent Mode - opatch silent (Doc ID 966023.1)
Oracle Grid Infrastructure 11.2.0.4.x Patch Set Update SUPPLEMENTAL README (Doc ID 1641136.1)(参考5 Manual Steps for Apply/Rollback Patch)
End.




