Oracle 19c RAC RU 19.3升级至19.28
一、环境介绍
| 环境 | 信息 |
|---|---|
| OS | Oracle Linux Server 7.9 |
| IP地址 | 192.168.184.101/102 |
| DB Version | oracle 19.3.0 |
| GI Version | grid 19.3.0 |
| ORACLE_SID | racdb |
| OPatch | p6880880_190000_Linux-x86-64(OPatch 12.2.0.1.47) |
| GI Patch | p37957391_190000_Linux-x86-64(GI-19.28) |
| DB Patch | p37960098_190000_Linux-x86-64(DB-19.28) |
| OJVM Patch | p37847857_190000_Linux-x86-64(OJVM-19.28) |
二、现有环境
[grid@oracle19c-rac01:/home/grid]$ crsctl query crs softwareversion
Oracle Clusterware version on node [oracle19c-rac01] is [19.0.0.0.0]
[grid@oracle19c-rac01:/home/grid]$ crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]
[grid@oracle19c-rac01:/home/grid]$ 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
[grid@oracle19c-rac01:/home/grid]$
[grid@oracle19c-rac01:/home/grid]$ cd $ORACLE_HOME/OPatch/
[grid@oracle19c-rac01:/u01/app/19.3.0/grid/OPatch]$ ./opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)
OPatch succeeded.
select * from product_component_version;
PRODUCT VERSION VERSION_FU STATUS
------------------------------ ---------- ---------- ------------------
Oracle Database 19c Enterprise 19.0.0.0.0 19.3.0.0.0 Production Edition
三、升级OPatch(oracle\grid)
###DB:
[root@oracle19c-rac01 dbhome_1]# pwd
/u01/app/oracle/product/19.3.0/dbhome_1
[root@oracle19c-rac01 dbhome_1]# mv OPatch OPatch.bak20250812
[root@oracle19c-rac01 dbhome_1]# unzip /tmp/p6880880_190000_Linux-x86-64\(OPatch\ 12.2.0.1.47\).zip -d /u01/app/oracle/product/19.3.0/dbhome_1/
[root@oracle19c-rac01 dbhome_1]# chmod -R 755 OPatch
[root@oracle19c-rac01 dbhome_1]#
[root@oracle19c-rac01 dbhome_1]# chown -R oracle:oinstall OPatch
[root@oracle19c-rac01 dbhome_1]# cd OPatch
[root@oracle19c-rac01 OPatch]# ./opatch version
OPatch Version: 12.2.0.1.47
OPatch succeeded.
###grid:
[root@rac01 grid]# cd /u01/app/19.3.0/grid
[root@rac01 grid]# mv OPatch OPatch.bak20250813
[root@rac01 grid]# unzip /tmp/p6880880_190000_Linux-x86-64.zip
[root@rac01 grid]# chown -R grid:oinstall OPatch
[root@rac01 grid]# cd OPatch
[root@rac01 OPatch]# ./opatch version
OPatch Version: 12.2.0.1.47
OPatch succeeded.
###同样方法升级第二个节点
四、验证OPatch Inventory的有效性
##grid
[grid@oracle19c-rac01:/home/grid]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
##oracle
[oracle@oracle19c-rac01:/home/oracle]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
##grid和oracle必须都返回SUCCESS
###同样方法验证第二个节点
五、检查补丁冲突
###grid
解压补丁至根/tmp目录 unzip p37957391_190000_Linux-x86-64\(GI-19.28\).zip
chown -R grid:oinstall 37957391
su - grid
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37957391/36758186
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37957391/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37957391/37962938
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37957391/37962946
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37957391/38124772
###oracle DB和OJVM
解压补丁至根/tmp目录 unzip p37960098_190000_Linux-x86-64\(DB-19.28\).zip
unzip p37847857_190000_Linux-x86-64\(OJVM-19.28\).zip
chown -R oracle:oinstall 37960098
chown -R oracle:oinstall 37847857
su - oracle
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/37847857
###同样方式检查第二个节点
六、运行 OPatch System Space 检查
-
Check if enough free space is available on the
ORACLE_HOMEfilesystem for the patches to be applied as given below:-
For Grid Infrastructure home, as home user:
-
Create file
/tmp/patch_list_gihome.txtwith the following content:Step Command 1.% cat /tmp/patch_list_gihome.txt 2.<UNZIPPED_PATCH_LOCATION>/37957391/37960098
<UNZIPPED_PATCH_LOCATION>/37957391/37962946
<UNZIPPED_PATCH_LOCATION>/37957391/37962938
<UNZIPPED_PATCH_LOCATION>/37957391/38124772
<UNZIPPED_PATCH_LOCATION>/37957391/36758186Note:
For HP-UX Itanium and Linux on IBM System z platforms, the last two rows in the previous example should not be added to the
patch_list_gihome.txtfile. -
Run the OPatch command to check if enough free space is available in the Grid Infrastructure home:
Step Command 1.% $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt
-
-
For Oracle home, as home user:
-
Create file
/tmp/patch_list_dbhome.txtwith the following content:Step Command 1.% cat /tmp/patch_list_dbhome.txt 2.<UNZIPPED_PATCH_LOCATION>/37957391/37960098
<UNZIPPED_PATCH_LOCATION>/37957391/37962946 -
Run OPatch command to check if enough free space is available in the Oracle home:
Step Command 1.% $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt
-
The command output reports pass and fail messages as per the system space availability:
- If OPatch reports
Prereq "checkSystemSpace" failed., then cleanup the system space as the required amount of space is not available. - If OPatch reports
Prereq "checkSystemSpace" passed., then no action is needed. Proceed with patch installation.
运行结果如下:
-
###grid
[grid@oracle19c-rac01:/home/grid]$ cat /tmp/patch_list_gihome.txt
/tmp/37957391/37960098
/tmp/37957391/37962946
/tmp/37957391/37962938
/tmp/37957391/38124772
/tmp/37957391/36758186
[grid@oracle19c-rac01:/home/grid]$ $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/19.3.0/grid
Central Inventory : /u01/app/oraInventory
from : /u01/app/19.3.0/grid/oraInst.loc
OPatch version : 12.2.0.1.47
OUI version : 12.2.0.7.0
Log file location : /u01/app/19.3.0/grid/cfgtoollogs/opatch/opatch2025-08-13_14-40-48PM_1.log
Invoking prereq "checksystemspace"
Prereq "checkSystemSpace" passed.
OPatch succeeded.
###DB
[oracle@oracle19c-rac01:/home/oracle]$ cat /tmp/patch_list_dbhome.txt
/tmp/37957391/37960098
/tmp/37957391/37962946
[oracle@oracle19c-rac01:/home/oracle]$ $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/19.3.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.3.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.47
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2025-08-13_14-46-01PM_1.log
Invoking prereq "checksystemspace"
Prereq "checkSystemSpace" passed.
OPatch succeeded.
###同样方式检查节点二
六、补丁冲突检测与解决
###root
###不要在/或/root目录下执行
[root@oracle19c-rac01:/tmp]# /u01/app/19.3.0/grid/OPatch/opatchauto apply /tmp/37957391 -analyze
[root@oracle19c-rac01:/tmp]# /u01/app/19.3.0/grid/OPatch/opatchauto apply /tmp/37847857 -analyze
###同样方式check节点二
七、GI补丁安装
补丁安装顺序:GI —> DB —> OJVM。
使用全绝对路径,不要使用Path。
###root
/u01/app/19.3.0/grid/OPatch/opatchauto apply /tmp/37957391 -oh /u01/app/19.3.0/grid
[root@oracle19c-rac01 tmp]# /u01/app/19.3.0/grid/OPatch/opatchauto apply /tmp/37957391 -oh /u01/app/19.3.0/grid
[root@oracle19c-rac01 ~]# su - grid
Last login: Wed Aug 13 17:09:51 CST 2025
[grid@oracle19c-rac01:/home/grid]$ /u01/app/19.3.0/grid/OPatch/opatch lspatches
38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
OPatch succeeded.
###节点二采取同样方式补丁。
八、DB补丁安装
###节点一执行步骤
### 停实例grid
srvctl stop instance -node oracle19c-rac01
### 打DB补丁root
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
/u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatchauto apply /tmp/37960098 -oh /u01/app/oracle/product/19.3.0/dbhome_1
### 打OJVM oracle
$ cd /tmp/37847857
[oracle@oracle19c-rac01:/home/oracle]$ /u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatch apply
### 启动实例 grid
srvctl start instance -node oracle19c-rac01
### 查看补丁 oracle
[oracle@oracle19c-rac01:/tmp/37847857]$ /u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatch lspatches
37847857;OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
###节点二采用同样方式
九、加载SQL到数据库
RAC只需要在其中一个节点执行就可以。
[oracle@oracle19c-rac01:/tmp/37847857]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 22 10:24:54 2025
Version 19.28.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBTEST READ WRITE NO
###加载补丁
[oracle@oracle19c-rac01:/home/oracle]$ $ORACLE_HOME/OPatch/datapatch -verbose
###如果有未打开的pdb,需要open pdb后手工指定pdb 来加载:
$ORACLE_HOME/OPatch/datapatch -verbose -apply 37960098 -force -pdbs <pdbname>
$ORACLE_HOME/OPatch/datapatch -verbose -apply 37847857 -force -pdbs <pdbname>
十、编译无效对象
###datapatch命令会加载SQL,这个过程可能会产生无效对象。 oracle
cd $ORACLE_HOME/rdbms/admin
@$ORACLE_HOME/rdbms/admin/utlrp.sql
[oracle@oracle19c-rac01:/home/oracle]$ cd $ORACLE_HOME/rdbms/admin
[oracle@oracle19c-rac01:/u01/app/oracle/product/19.3.0/dbhome_1/rdbms/admin]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 22 14:47:05 2025
Version 19.28.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
.............
ERRORS DURING RECOMPILATION
---------------------------
0
Function created.
PL/SQL procedure successfully completed.
Function dropped.
PL/SQL procedure successfully completed.
十一、补丁验证
###GI
[grid@oracle19c-rac01:/home/grid]$ /u01/app/19.3.0/grid/OPatch/opatch lspatches
38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
OPatch succeeded.
###DB
[oracle@oracle19c-rac01:/home/oracle]$ /u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatch lspatches
37847857;OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
SQL> select PATCH_ID,PATCH_TYPE,ACTION,STATUS,TARGET_VERSION from dba_registry_sqlpatch;
PATCH_ID PATCH_TYPE ACTION STATUS TARGET_VERSION
---------- ---------- --------------- ------------------------- ---------------
29517242 RU APPLY SUCCESS 19.3.0.0.0
37847857 INTERIM APPLY SUCCESS 19.28.0.0.0
37960098 RU APPLY SUCCESS 19.28.0.0.0
十二、参考链接
Oracle 19c RAC RU 升级 19.3 到 19.28 操作手册 -- cnDBA.cn_中国DBA社区
oracle 19c rac升级补丁到19.28详细方案.docx - 墨天轮文档
如有错误,欢迎指正。

浙公网安备 33010602011771号