暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

oracle 19c rac 补丁升级(19.14.0->19.26.0)

原创 dbaking 2025-03-28
1004

在完成Oracle 19c RAC基础环境部署后,为确保生产环境的安全性,还需为数据库安装最新补丁进行安全加固。补丁管理是DBA日常运维工作中的重要环节,这项工作要求DBA具备较高的专业技能,包括补丁失败原因分析、补丁回退等复杂操作。本文旨在提供补丁安装的参考指南,同时算是笔者在实际操作过程中的经验总结。

0.说明

所有要求的软件已经上传到/soft目录。

[root@dbnode1 ~]# cd /soft [root@dbnode1 soft]# ls -l total 3702264 -rw-r--r-- 1 root root 3659133141 Mar 28 14:10 p37262208_190000_Linux-x86-64.zip -rw-r--r-- 1 root root 131979850 Mar 28 14:09 p6880880_190000_Linux-x86-64.zip [root@dbnode2 ~]# ls -l total 3702264 -rw-r--r-- 1 root root 3659133141 Mar 28 14:11 p37262208_190000_Linux-x86-64.zip -rw-r--r-- 1 root root 131979850 Mar 28 14:10 p6880880_190000_Linux-x86-64.zip

1.注意事项

  • 在打补丁之前一定要阅读readme文件,参照readme文件步骤打补丁。
  • 在opatchauto应用Update时,第一个节点和最后一个节点需要单独完成,中间的节点可以并行做。在生产环境中,建议对每个节点依次应用RU。
  • 依次在各节点重复第8 – 11步完成各节点的补丁应用。

2.备份安装文件

在安装补丁前,在OS层对oracle安装文件进行备份,以用于补丁失败后的回滚。

在文件系统有空间的目录下创建一个备份目录用于备份oracle安装文件。

mkdir /backup

备份2个节点的oracle安装文件

tar -zcvf /backup/20250328-oracle.tar.gz /oracle

3.停止OEM,OGG,crontab等涉及到数据库的外部程序

停掉所有的数据库应用,包括sqlplus。一般确认是否停掉应用,可以采用以下方法。

一般应用都是通过Oracle监听程序连接到数据库的,因此可以使用以下命令判断:

[oracle@dbnode1 ~]$ ps -ef |grep LOCAL=NO oracle 14209 1 0 14:08 ? 00:00:00 oraclezycdb1 (DESCRIPTION=(LOCAL=NO)(ADDRESS=(PROTOCOL=beq))) oracle 14224 1 0 14:08 ? 00:00:00 oraclezycdb1 (DESCRIPTION=(LOCAL=NO)(ADDRESS=(PROTOCOL=beq))) oracle 14225 1 0 14:08 ? 00:00:00 oraclezycdb1 (DESCRIPTION=(LOCAL=NO)(ADDRESS=(PROTOCOL=beq))) oracle 14293 1 0 14:08 ? 00:00:00 oraclezycdb1 (DESCRIPTION=(LOCAL=NO)(ADDRESS=(PROTOCOL=beq))) oracle 14303 1 0 14:08 ? 00:00:00 oraclezycdb1 (DESCRIPTION=(LOCAL=NO)(ADDRESS=(PROTOCOL=beq)))

一般存在进程表示应用没有停干净,需要进一步检查。

当然也可以通过在数据库中查看v$session的方式排查。

4.检查失效对象

查询失效对象,用于打补丁后的比较。在其中一个节点执行即可。

set lines 200 pages 50000 spool /tmp/preinvalid.log select owner, count(*) from dba_invalid_objects group by owner; select owner, object_type, object_name, subobject_name from dba_invalid_objects order by 1,2,3; spool off

5.准备oui-patch.xml文件

根据文档BUG 29859410 - OPATCHAUTO_194:OPATCHAUTO FAILED DUE TO WRONG PERMISSION OF OUI-PATCH.XML IN DIFFERENT USER ENV的描述,该问题是由于在安装19c GI时生成的本地oui-patch.xml权限存在问题,并且没有生成远程节点的oui-patch.xml文件,在打补丁的过程中从节点1拷贝的文件存在权限不正确的问题,会导致对除节点1之外的节点打补丁失败,在20.1版本修复该问题。因此,我们在19c上打RU需要提前准备好oui-patch.xml文件。

查看节点1的文件,确认文件权限为660,属主和属组为grid:oinstall。

[grid@dbnode1:~]$ cd /oracle/app/oraInventory/ContentsXML/ [grid@dbnode1:/oracle/app/oraInventory/ContentsXML] ls -l total 16 -rw-rw---- 1 grid oinstall 300 Dec 10 10:17 comps.xml -rw-rw---- 1 grid oinstall 567 Dec 10 10:14 inventory.xml -rw-rw---- 1 grid oinstall 292 Dec 10 10:17 libs.xml -rw-rw---- 1 grid oinstall 174 Dec 10 10:14 oui-patch.xml

查看节点2的文件,可以看到当前并不存在oui-patch.xml文件。新安装集群中,节点2是缺失这个文件的,导致节点2应用补丁时报错。

[grid@dbnode2:~]$ cd /oracle/app/oraInventory/ContentsXML/ [grid@dbnode2:/oracle/app/oraInventory/ContentsXML] ls -l total 12 -rw-rw---- 1 grid oinstall 300 Dec 10 10:17 comps.xml -rw-rw---- 1 grid oinstall 567 Dec 10 10:17 inventory.xml -rw-rw---- 1 grid oinstall 292 Dec 10 10:17 libs.xml

将节点1的oui-patch.xml拷贝到节点2,并确保权限正确。

[grid@dbnode2:/oracle/app/oraInventory/ContentsXML]$ scp -p dbnode1:/oracle/app/oraInventory/ContentsXML/oui-patch.xml ./ 100% 174 0.2KB/s 00:00 [grid@dbnode2:/oracle/app/oraInventory/ContentsXML]$ ls -l total 16 -rw-rw---- 1 grid oinstall 300 Dec 10 10:17 comps.xml -rw-rw---- 1 grid oinstall 567 Dec 10 10:17 inventory.xml -rw-rw---- 1 grid oinstall 292 Dec 10 10:17 libs.xml -rw-rw---- 1 grid oinstall 174 Dec 10 10:17 oui-patch.xml

6.验证与升级OPatch工具版本

当前最新的RU的19.26(2025/01/21发布的),需要的最低OPatch工具版本为12.2.0.1.44,当前系统的OPatch版本为12.2.0.1.42,OPatch版本不满足条件,需要更新OPatch工具。

OPatch工具下载地址:

  • https://updates.oracle.com/download/6880880.html
  • MOS patch 6880880

检查各个节点的grid和oracle用户的OPatch版本,注意使用opatchauto打补丁之前,所有节点的OPatch版本必须都满足要求,否则opatchauto将抛出异常。这也是要求在打补丁之前需要阅读readme的原因。

1.验证

  • 节点1 GI环境验证

    [grid@dbnode1 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.42 OPatch succeeded. [grid@dbnode1 ~]$
  • 节点1 DB环境验证

    [oracle@dbnode1 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.42 OPatch succeeded. [oracle@dbnode1 ~]$
  • 节点2 GI环境验证

    [grid@dbnode2 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.42 OPatch succeeded. [grid@dbnode2 ~]$
  • 节点2 DB环境验证

    [oracle@dbnode2 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.42 OPatch succeeded. [oracle@dbnode2 ~]$

如果有多个节点,也如上述方式验证验证其他节点。

2.升级OPatch

  • 升级节点1GI环境

    --升级GI环境的OPatch需要使用root操作。 --备份旧的OPatch,我一般使用mv备份 [root@dbnode1 ~]#cd $ORACLE_HOME [root@dbnode1 grid]#mv OPatch OPatch20250328 --解压新的OPatch [root@dbnode1 grid]#unzip /soft/p6880880_190000_Linux-x86-64.zip ...输出省略 [root@dbnode1 grid]#chown -R grid:oinstall OPatch --验证OPatch版本 [root@dbnode1 ~]#su - grid [grid@dbnode1 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.45 OPatch succeeded.
  • 升级节点1DB环境

    --备份旧的OPatch,我一般使用mv备份 [root@dbnode1 ~]#su - oracle [oracle@dbnode1 ~]$cd $ORACLE_HOME [oracle@dbnode1 dbhome_1]$mv OPatch OPatch20250328 --解压新的OPatch [oracle@dbnode1 dbhome_1]$unzip /soft/p6880880_190000_Linux-x86-64.zip ...输出省略 --验证OPatch版本 [oracle@dbnode1 dbhome_1]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.45 OPatch succeeded.
  • 升级节点2GI环境

    --升级GI环境的OPatch需要使用root操作。 --备份旧的OPatch,我一般使用mv备份 [root@dbnode2 ~]#cd $ORACLE_HOME [root@dbnode2 grid]#mv OPatch OPatch20250328 --解压新的OPatch [root@dbnode2 grid]#unzip /soft/p6880880_190000_Linux-x86-64.zip ...输出省略 [root@dbnode2 grid]#chown -R grid:oinstall OPatch --验证OPatch版本 [root@dbnode2 ~]#su - grid [grid@dbnode2 ~]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.45 OPatch succeeded.
  • 升级节点2DB环境

    --备份旧的OPatch,我一般使用mv备份 [root@dbnode2 ~]#su - oracle [oracle@dbnode2 ~]$cd $ORACLE_HOME [oracle@dbnode2 dbhome_1]$mv OPatch OPatch20250328 --解压新的OPatch [oracle@dbnode2 dbhome_1]$unzip /soft/p6880880_190000_Linux-x86-64.zip ...输出省略 --验证OPatch版本 [oracle@dbnode2 dbhome_1]$ ${ORACLE_HOME}/OPatch/opatch version OPatch Version: 12.2.0.1.45 OPatch succeeded.

7.检查oraInventory的完整性

检查各节点oraInventory的完整性,以下命令返回OPatch succeeded,如果返回错误,则需要先修复oraInventory目录。

--节点1 [grid@dbnode1:~] opatch lsinventory -detail -oh /oracle/app/19.0.0/grid ...... OPatch succeeded. [oracle@dbnode1:~] opatch lsinventory -detail -oh /oracle/app/oracle/product/19.0.0/dbhome_1 ... OPatch succeeded. --节点2 [grid@dbnode2:~] opatch lsinventory -detail -oh /oracle/app/19.0.0/grid ...... OPatch succeeded. [oracle@dbnode2:~] opatch lsinventory -detail -oh /oracle/app/oracle/product/19.0.0/dbhome_1 ... OPatch succeeded.

8.使用grid用户解压Update压缩包

注意使用grid用户解压补丁包。

[root@dbnode1:/soft]# ls -l p37262208_190000_Linux-x86-64.zip -rw-r--r-- 1 grid oinstall 3659133141 Mar 25 22:06 p37262208_190000_Linux-x86-64.zip [root@dbnode1:/soft]# su - grid [grid@dbnode1:~]$ cd /soft [grid@dbnode1:/soft]$ unzip -qd ./ru19.26.0.0.250121 p37262208_190000_Linux-x86-64.zip [grid@dbnode1 soft]$ ls -l ru19.26.0.0.250121/ total 2612 drwxrwxrwx 4 grid oinstall 80 Jan 21 18:05 37262208 -rw-rw-r-- 1 grid oinstall 2672869 Jan 22 01:53 PatchSearch.xml
[root@dbnode2:/soft]# ls -l p37262208_190000_Linux-x86-64.zip -rw-r--r-- 1 grid oinstall 3659133141 Mar 25 22:06 p37262208_190000_Linux-x86-64.zip [root@dbnode2:/soft]# su - grid [grid@dbnode2:~]$ cd /soft [grid@dbnode2:/soft]$ unzip -qd ./ru19.26.0.0.250121 p37262208_190000_Linux-x86-64.zip [grid@dbnode2 soft]$ ls -l ru19.26.0.0.250121/ total 2612 drwxrwxrwx 4 grid oinstall 80 Jan 21 18:05 37262208 -rw-rw-r-- 1 grid oinstall 2672869 Jan 22 01:53 PatchSearch.xml

9.确认集群资源都是ONLINE

在打补丁之前,需要确认集群资源都是ONLINE的,如果DB的资源时OFFLINE的,那么opatchauto只会对GI应用补丁。

[root@dbnode1 ~]# crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE dbnode1 STABLE ONLINE ONLINE dbnode2 STABLE ora.chad ONLINE ONLINE dbnode1 STABLE ONLINE ONLINE dbnode2 STABLE ora.net1.network ONLINE ONLINE dbnode1 STABLE ONLINE ONLINE dbnode2 STABLE ora.ons ONLINE ONLINE dbnode1 STABLE ONLINE ONLINE dbnode2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE dbnode1 STABLE 2 ONLINE ONLINE dbnode2 STABLE 3 ONLINE OFFLINE STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE dbnode1 STABLE 2 ONLINE ONLINE dbnode2 STABLE 3 OFFLINE OFFLINE STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE dbnode1 STABLE ora.OCR.dg(ora.asmgroup) 1 ONLINE ONLINE dbnode1 STABLE 2 ONLINE ONLINE dbnode2 STABLE 3 OFFLINE OFFLINE STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE dbnode1 Started,STABLE 2 ONLINE ONLINE dbnode2 Started,STABLE 3 OFFLINE OFFLINE STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE dbnode1 STABLE 2 ONLINE ONLINE dbnode2 STABLE 3 OFFLINE OFFLINE STABLE ora.cvu 1 ONLINE ONLINE dbnode1 STABLE ora.dbnode1.vip 1 ONLINE ONLINE dbnode1 STABLE ora.dbnode2.vip 1 ONLINE ONLINE dbnode2 STABLE ora.qosmserver 1 ONLINE ONLINE dbnode1 STABLE ora.scan1.vip 1 ONLINE ONLINE dbnode1 STABLE ora.zycdb.db 1 ONLINE ONLINE dbnode1 Open,HOME=/oracle/ap p/oracle/product/19. 0.0/dbhome_1,STABLE 2 ONLINE ONLINE dbnode2 Open,HOME=/oracle/ap p/oracle/product/19. 0.0/dbhome_1,STABLE --------------------------------------------------------------------------------

10.分析RU

在应用RU之前用root在每个节点执行以下命令分析补丁集,分析命令会检查补丁应用的各种因素是否满足,例如磁盘空间,补丁冲突等。

如果分析抛出错误信息,则需要修复错误,再次分析。

在其中一个节点分析即可,会分析两个节点是否满足要求。

输出如下:

[root@dbnode1 soft]# /oracle/app/19.0.0/grid/OPatch/opatchauto apply /soft/ru19.26.0.0.250121/37262208/37257886 -analyze OPatchauto session is initiated at Tue Mar 25 22:59:50 2025 System initialization log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2025-03-25_10-59-53PM.log. Session log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/opatchauto2025-03-25_11-00-10PM.log The id for this session is Q5UZ Executing OPatch prereq operations to verify patch applicability on home /oracle/app/19.0.0/grid Patch applicability verified successfully on home /oracle/app/19.0.0/grid Executing OPatch prereq operations to verify patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Executing patch validation checks on home /oracle/app/19.0.0/grid Patch validation checks successfully completed on home /oracle/app/19.0.0/grid Executing patch validation checks on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch validation checks successfully completed on home /oracle/app/oracle/product/19.0.0/dbhome_1 Verifying SQL patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 SQL patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 OPatchAuto successful. --------------------------------Summary-------------------------------- Analysis for applying patches has completed successfully: Host:dbnode1 CRS Home:/oracle/app/19.0.0/grid Version:19.0.0.0.0 ==Following patches were SUCCESSFULLY analyzed to be applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-00-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-00-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-00-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-00-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-00-22PM_1.log Host:dbnode1 RAC Home:/oracle/app/oracle/product/19.0.0/dbhome_1 Version:19.0.0.0.0 ==Following patches were SKIPPED: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Reason: This patch is not applicable to this specified target type - "rac_database" ==Following patches were SUCCESSFULLY analyzed to be applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-01-02PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-01-02PM_1.log OPatchauto session completed at Tue Mar 25 23:01:54 2025 Time taken to complete the session 2 minutes, 1 second

我们可以根据analyze的输出日志观察到analyze的检查项和结果:

[root@dbnode1 soft]# grep Prerequisite /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-01-02PM_1.log [Mar 25, 2025 11:01:27 PM] [INFO] ------- Final Apply Prerequisite checks status ------- [Mar 25, 2025 11:01:27 PM] [INFO] {CheckMinimumOPatchVersion=[ Prerequisite Status: PASSED] , CheckConflictAmongPatches=[ Prerequisite Status: PASSED] , CheckPatchingModel=[ Prerequisite Status: PASSED] , CheckPatchsetUpdateCompatible=[ Prerequisite Status: PASSED] , CheckForNoOpPatches=[ Prerequisite Status: PASSED] , CheckPatchsetUpdateComponents=[ Prerequisite Status: PASSED] , CheckConflictAgainstOracleHome=[ Prerequisite Status: PASSED] , CheckConflictWithPatchsetUpdate=[ Prerequisite Status: PASSED] , CheckForInputValues=[ Prerequisite Status: PASSED] , CheckForIdenticalPatchesInOracleHome=[ Prerequisite Status: PASSED] , CheckFusionAppsCompatible=[ Prerequisite Status: PASSED] , CheckSystemCommandsAvailable=[ Prerequisite Status: PASSED] , CheckSystemSpace=[ Prerequisite Status: PASSED] , CheckPatchApplyDependents=[ Prerequisite Status: PASSED]

11.应用RU

在opatchauto应用RU时,第一个节点和最后一个节点需要单独完成,中间的节点可以并行做。在生产环境中,建议对每个节点依次应用RU。

注意:

  • 如果创建了数据库,并且处于open状态,那么在opatchauto时,不指定-oh参数,opatchauto可以自动对GI和RDBMS打上补丁并自动执行datapatch;
  • 如果没有创建数据库或者数据库没有open,则不指定-oh参数时,opatchauto仅对GI打补丁,需要手工显示指定-oh参数对RDBMS打补丁。
  • 如果没有创建数据库,分别对GI和RDBMS打了补丁,则在之后创建数据库后,不需要再调用datapatch。

执行以下命令应用RU:

[root@dbnode1 soft]#/oracle/app/19.0.0/grid/OPatch/opatchauto apply /soft/ru19.26.0.0.250121/37262208/37257886

输出如下:

节点1

[root@dbnode1 soft]# /oracle/app/19.0.0/grid/OPatch/opatchauto apply /soft/ru19.26.0.0.250121/37262208/37257886 OPatchauto session is initiated at Tue Mar 25 23:04:38 2025 System initialization log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2025-03-25_11-04-40PM.log. Session log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/opatchauto2025-03-25_11-04-56PM.log The id for this session is 2RAY Executing OPatch prereq operations to verify patch applicability on home /oracle/app/19.0.0/grid Patch applicability verified successfully on home /oracle/app/19.0.0/grid Executing OPatch prereq operations to verify patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Executing patch validation checks on home /oracle/app/19.0.0/grid Patch validation checks successfully completed on home /oracle/app/19.0.0/grid Executing patch validation checks on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch validation checks successfully completed on home /oracle/app/oracle/product/19.0.0/dbhome_1 Verifying SQL patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 SQL patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Preparing to bring down database service on home /oracle/app/oracle/product/19.0.0/dbhome_1 Successfully prepared home /oracle/app/oracle/product/19.0.0/dbhome_1 to bring down database service Performing prepatch operations on CRS - bringing down CRS service on home /oracle/app/19.0.0/grid Prepatch operation log file location: /oracle/app/grid/crsdata/dbnode1/crsconfig/crs_prepatch_apply_inplace_dbnode1_2025-03-25_11-06-45PM.log CRS service brought down successfully on home /oracle/app/19.0.0/grid Performing prepatch operation on home /oracle/app/oracle/product/19.0.0/dbhome_1 Prepatch operation completed successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Start applying binary patch on home /oracle/app/oracle/product/19.0.0/dbhome_1 Binary patch applied successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Running rootadd_rdbms.sh on home /oracle/app/oracle/product/19.0.0/dbhome_1 Successfully executed rootadd_rdbms.sh on home /oracle/app/oracle/product/19.0.0/dbhome_1 Performing postpatch operation on home /oracle/app/oracle/product/19.0.0/dbhome_1 Postpatch operation completed successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Start applying binary patch on home /oracle/app/19.0.0/grid Binary patch applied successfully on home /oracle/app/19.0.0/grid Running rootadd_rdbms.sh on home /oracle/app/19.0.0/grid Successfully executed rootadd_rdbms.sh on home /oracle/app/19.0.0/grid Performing postpatch operations on CRS - starting CRS service on home /oracle/app/19.0.0/grid Postpatch operation log file location: /oracle/app/grid/crsdata/dbnode1/crsconfig/crs_postpatch_apply_inplace_dbnode1_2025-03-25_11-16-10PM.log CRS service started successfully on home /oracle/app/19.0.0/grid Preparing home /oracle/app/oracle/product/19.0.0/dbhome_1 after database service restarted No step execution required......... Trying to apply SQL patch on home /oracle/app/oracle/product/19.0.0/dbhome_1 No SQL patch operations are required on local node for this home OPatchAuto successful. --------------------------------Summary-------------------------------- Patching is completed successfully. Please find the summary as follows: Host:dbnode1 RAC Home:/oracle/app/oracle/product/19.0.0/dbhome_1 Version:19.0.0.0.0 Summary: ==Following patches were SKIPPED: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Reason: This patch is not applicable to this specified target type - "rac_database" ==Following patches were SUCCESSFULLY applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-09-08PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-09-08PM_1.log Host:dbnode1 CRS Home:/oracle/app/19.0.0/grid Version:19.0.0.0.0 Summary: ==Following patches were SUCCESSFULLY applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-12-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-12-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-12-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-12-22PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-12-22PM_1.log OPatchauto session completed at Tue Mar 25 23:18:59 2025 Time taken to complete the session 14 minutes, 19 seconds [root@dbnode1 soft]#

节点2

[root@dbnode2 soft]# /oracle/app/19.0.0/grid/OPatch/opatchauto apply /soft/ru19.26.0.0.250121/37262208/37257886 OPatchauto session is initiated at Tue Mar 25 23:20:06 2025 System initialization log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2025-03-25_11-20-09PM.log. Session log file is /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/opatchauto2025-03-25_11-20-27PM.log The id for this session is 959K Executing OPatch prereq operations to verify patch applicability on home /oracle/app/19.0.0/grid Patch applicability verified successfully on home /oracle/app/19.0.0/grid Executing OPatch prereq operations to verify patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Executing patch validation checks on home /oracle/app/19.0.0/grid Patch validation checks successfully completed on home /oracle/app/19.0.0/grid Executing patch validation checks on home /oracle/app/oracle/product/19.0.0/dbhome_1 Patch validation checks successfully completed on home /oracle/app/oracle/product/19.0.0/dbhome_1 Verifying SQL patch applicability on home /oracle/app/oracle/product/19.0.0/dbhome_1 SQL patch applicability verified successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Preparing to bring down database service on home /oracle/app/oracle/product/19.0.0/dbhome_1 Successfully prepared home /oracle/app/oracle/product/19.0.0/dbhome_1 to bring down database service Performing prepatch operations on CRS - bringing down CRS service on home /oracle/app/19.0.0/grid Prepatch operation log file location: /oracle/app/grid/crsdata/dbnode2/crsconfig/crs_prepatch_apply_inplace_dbnode2_2025-03-25_11-22-23PM.log CRS service brought down successfully on home /oracle/app/19.0.0/grid Performing prepatch operation on home /oracle/app/oracle/product/19.0.0/dbhome_1 Prepatch operation completed successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Start applying binary patch on home /oracle/app/oracle/product/19.0.0/dbhome_1 Binary patch applied successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Running rootadd_rdbms.sh on home /oracle/app/oracle/product/19.0.0/dbhome_1 Successfully executed rootadd_rdbms.sh on home /oracle/app/oracle/product/19.0.0/dbhome_1 Performing postpatch operation on home /oracle/app/oracle/product/19.0.0/dbhome_1 Postpatch operation completed successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 Start applying binary patch on home /oracle/app/19.0.0/grid Binary patch applied successfully on home /oracle/app/19.0.0/grid Running rootadd_rdbms.sh on home /oracle/app/19.0.0/grid Successfully executed rootadd_rdbms.sh on home /oracle/app/19.0.0/grid Performing postpatch operations on CRS - starting CRS service on home /oracle/app/19.0.0/grid Postpatch operation log file location: /oracle/app/grid/crsdata/dbnode2/crsconfig/crs_postpatch_apply_inplace_dbnode2_2025-03-25_11-31-49PM.log CRS service started successfully on home /oracle/app/19.0.0/grid Preparing home /oracle/app/oracle/product/19.0.0/dbhome_1 after database service restarted No step execution required......... Trying to apply SQL patch on home /oracle/app/oracle/product/19.0.0/dbhome_1 SQL patch applied successfully on home /oracle/app/oracle/product/19.0.0/dbhome_1 OPatchAuto successful. --------------------------------Summary-------------------------------- Patching is completed successfully. Please find the summary as follows: Host:dbnode2 RAC Home:/oracle/app/oracle/product/19.0.0/dbhome_1 Version:19.0.0.0.0 Summary: ==Following patches were SKIPPED: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Reason: This patch is not applicable to this specified target type - "rac_database" ==Following patches were SUCCESSFULLY applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-24-40PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-24-40PM_1.log Host:dbnode2 CRS Home:/oracle/app/19.0.0/grid Version:19.0.0.0.0 Summary: ==Following patches were SUCCESSFULLY applied: Patch: /soft/ru19.26.0.0.250121/37262208/37257886/36758186 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-27-59PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37260974 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-27-59PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37266638 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-27-59PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37268031 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-27-59PM_1.log Patch: /soft/ru19.26.0.0.250121/37262208/37257886/37461387 Log: /oracle/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2025-03-25_23-27-59PM_1.log OPatchauto session completed at Tue Mar 25 23:49:28 2025 Time taken to complete the session 29 minutes, 19 seconds [root@dbnode2 soft]#

12.确认补丁信息

确认每个节点的补丁信息。

[grid@dbnode1 ~]$ ${ORACLE_HOME}/OPatch/opatch lspatches 37461387;TOMCAT RELEASE UPDATE 19.0.0.0.0 (37461387) 37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031) 37266638;ACFS RELEASE UPDATE 19.26.0.0.0 (37266638) 37260974;Database Release Update : 19.26.0.0.250121 (37260974) 36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186) OPatch succeeded. [oracle@dbnode1 ~]$ ${ORACLE_HOME}/OPatch/opatch lspatches 37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031) 37260974;Database Release Update : 19.26.0.0.250121 (37260974) OPatch succeeded. [grid@dbnode2 ~]$ ${ORACLE_HOME}/OPatch/opatch lspatches 37461387;TOMCAT RELEASE UPDATE 19.0.0.0.0 (37461387) 37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031) 37266638;ACFS RELEASE UPDATE 19.26.0.0.0 (37266638) 37260974;Database Release Update : 19.26.0.0.250121 (37260974) 36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186) OPatch succeeded. [oracle@dbnode2 ~]$ ${ORACLE_HOME}/OPatch/opatch lspatches 37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031) 37260974;Database Release Update : 19.26.0.0.250121 (37260974) OPatch succeeded.

13.确认SQL patch信息

缺省情况下,opatchauto自动调用datapatch,在成功应用完RU后,可以从视图dba_registry_sqlpatch看到最新应用的patch。

set lines 199 col STATUS for a12 col DESCRIPTION for a60 col ACTION_TIME for a32 select patch_id,action,status,action_time,description from dba_registry_sqlpatch;

输出如下:

SQL> set lines 199 SQL> col STATUS for a12 SQL> col DESCRIPTION for a60 SQL> select patch_id,action,status,action_time,description from dba_registry_sqlpatch; PATCH_ID ACTION STATUS ACTION_TIME DESCRIPTION ---------- ------------------------------ ------------ -------------------------------- ------------------------------------------------------------ 29517242 APPLY SUCCESS 25-MAR-25 02.23.33.616664 PM Database Release Update : 19.3.0.0.190416 (29517242) 37260974 APPLY SUCCESS 25-MAR-25 11.35.30.379499 PM Database Release Update : 19.26.0.0.250121 (37260974) 33515361 APPLY SUCCESS 25-MAR-25 10.01.18.222833 PM Database Release Update : 19.14.0.0.220118 (33515361)

如果opatchauto没有自动调用datapatch,则需要手工执行datapatch。

对于单实例/RAC的CDB/non-CDB环境,分别使用以下表格的步骤调用datapatch。

*Steps* *Single Tenant (non-CDB/PDB)* *Steps* *Multitenant (CDB/PDB)*
1 % sqlplus /nolog 1 % sqlplus /nolog
2 SQL> Connect / as sysdba 2 SQL> Connect / as sysdba
3 SQL> startup 3 SQL> startup
4 SQL> quit 4 SQL> alter pluggable database all open;
5 % cd $ORACLE_HOME/OPatch 5 SQL> quit
6 % ./datapatch -verbose 6 % cd $ORACLE_HOME/OPatch
7 % ./datapatch -verbose

14.检查并编译失效对象

在打补丁后检查失效对象信息并记录,和打补丁后作对比,如果失效对象比之前多,则执行utlrp.sql重新编译失效对象。在其中一个节点操作就行。

select owner, count(*) from dba_invalid_objects group by owner; select owner, object_type, object_name, subobject_name from dba_invalid_objects order by 1,2,3;

重新编译失效对象:

SQL> @?/rdbms/admin/utlrp.sql

本文完,感谢大家的阅读,有不对的地方欢迎指教。

文章转载自dbaking,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论