签到成功

知道了

CNDBA社区CNDBA社区

Oracle 19c RAC RU 升级 19.3 到 19.28 操作手册

2025-07-23 18:14 376 0 原创 Oracle 19c
作者: dave

1 当前环境

[grid@www.cndba.cn ~]$ crsctl query crs softwareversion
Oracle Clusterware version on node [rac1] is [19.0.0.0.0]
[grid@www.cndba.cn ~]$ crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]
[grid@www.cndba.cn ~]$ 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@www.cndba.cn ~]$

[grid@www.cndba.cn 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.
[grid@www.cndba.cn OPatch]$

2 更新OPatch工具

两个节点的GI和DB HOME的OPatch 都需要更换。 
--GI:
[root@www.cndba.cn grid]# mv /u03/app/19.3.0/grid/OPatch /u03/app/19.3.0/grid/OPatch.bak
[root@www.cndba.cn grid]# unzip -q /u01/software/p6880880_190000_Linux-x86-64-12.2.0.1.47.zip -d /u03/app/19.3.0/grid
[root@www.cndba.cn grid]# chmod -R 755 /u03/app/19.3.0/grid/OPatch
[root@www.cndba.cn grid]# chown -R grid:oinstall /u03/app/19.3.0/grid/OPatch

--DB:
[root@www.cndba.cn grid]# mv /u03/app/oracle/product/19.3.0/db_1/OPatch  /u03/app/oracle/product/19.3.0/db_1/OPatch.bak
[root@www.cndba.cn grid]#  unzip -q /u01/software/p6880880_190000_Linux-x86-64-12.2.0.1.47.zip -d /u03/app/oracle/product/19.3.0/db_1
[root@www.cndba.cn grid]# chmod -R 755 /u03/app/oracle/product/19.3.0/db_1/OPatch
[root@www.cndba.cn grid]# chown -R oracle:oinstall /u03/app/oracle/product/19.3.0/db_1/OPatch

[root@www.cndba.cn grid]# /u03/app/oracle/product/19.3.0/db_1/OPatch/opatch version
OPatch Version: 12.2.0.1.47

OPatch succeeded.
[root@www.cndba.cn grid]#

3 验证Oracle Inventory的有效性

GI HOME 和DB HOME 都需要验证,分别使用grid和oracle用户执行如下命令,确保返回SUCCESS:

$ <ORACLE_HOME>/OPatch/opatch lsinventory -detail -oh <ORACLE_HOME>

GRID 用户:
[grid@www.cndba.cn OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

Oracle 用户:
[oracle@www.cndba.cn ~]$  $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

4 下载19.28 的RU

Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID 1454618.1)

[oracle@www.cndba.cn software]$ tree
.
├── 37957391 [error opening dir]
├── p37847857_190000_Linux-x86-64-OJVM.zip
├── p37957391_190000_Linux-x86-64-GI.zip
├── p37960098_190000_Linux-x86-64-DB.zip
├── p6880880_190000_Linux-x86-64-12.2.0.1.47.zip
└── PatchSearch.xml

5 检查Patch 冲突

19.28 的GI RU里包含GI和DB的补丁,需要分别进行检测,在检测之前需要先修改权限,否则会报错。

GRID 用户执行:
chown grid:oinstall /u03/software/37957391 -R
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/37962946
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/37962938
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/38124772
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/36758186


Oracle 用户执行:
chown oracle:oinstall /u03/software/37957391 -R
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u03/software/37957391/37962946


Oracle 用户检查OJVM:
[root@www.cndba.cn software]# chown oracle:oinstall 37847857 -R

[oracle@www.cndba.cn ~]$ cd /u03/software/37847857
[oracle@www.cndba.cn 37847857]$ /u03/app/oracle/product/19.3.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

6 检查系统空间

GRID用户操作:

创建/tmp/patch_list_gihome.txt 文件,并添加如下内容:

[grid@www.cndba.cn ~]$ cat /tmp/patch_list_gihome.txt
/u03/software/37957391/37960098
/u03/software/37957391/37962946
/u03/software/37957391/37962938
/u03/software/37957391/38124772
/u03/software/37957391/36758186


运行opatch命令检查GI HOME下是否有足够的空间:
[grid@www.cndba.cn ~]$  chown grid:oinstall /u03/software/37957391 -R

[grid@www.cndba.cn ~]$  $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt


ORACLE 用户操作:
创建文件/tmp/patch_list_dbhome.txt并添加如下内容:

[oracle@www.cndba.cn ~]$ cat /tmp/patch_list_dbhome.txt
/u03/software/37957391/37960098
/u03/software/37957391/37962946

运行opatch命令检查DB HOME下是否有足够的空间:
[oracle@www.cndba.cn ~]$ chown oracle:oinstall /u03/software/37957391 -R
[oracle@www.cndba.cn ~]$ $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt

7 安装前分析

在19.28 的README 中建议使用如下命令:
安装前:
cluvfy stage -pre patch

安装后:
cluvfy stage -post patch

我们这里还是按照之前的方式使用analyze分析,"-analyze"选项可以模拟OPatchauto apply,提前检查所有检查项目,但不会真正改变系统。

GI+DB分析:root用户执行,大约7分钟:
[root@www.cndba.cn software]# chown grid:oinstall 37957391 -R
[root@www.cndba.cn software]# /u03/app/19.3.0/grid/OPatch/opatchauto apply /u03/software/37957391 -analyze
……
Executing OPatch prereq operations to verify patch applicability on home /u03/app/19.3.0/grid
Executing OPatch prereq operations to verify patch applicability on home /u03/app/oracle/product/19.3.0/db_1
……

这个命令会同时校验GI和DB。

8 应用GI 的RU

这里将GI和DB 分开打补丁。补丁安装顺序:GI —> DB —> OJVM。http://www.cndba.cn/dave/article/131696

注意:

  1. GI 和 DB 都是在root 用户下操作,使用全路径,不要使用Path。
  2. 对应的Patch文件要先修改成对应的用户组。
  3. 打gi要用gi_home的opatchauto,打oracle用oracle_home的opatchauto。
  4. ojvm 需要用oracle 操作。
  5. 补丁过程如果报错,可以根据错误修复,然后使用resume,表示接着上次失败的地方继续安装的意思。

    [root@www.cndba.cn software]# /u03/app/19.3.0/grid/OPatch/opatchauto resume

这里先打rac1的GI,完成后再打rac2。http://www.cndba.cn/dave/article/131696

http://www.cndba.cn/dave/article/131696

8.1 节点1执行

我这里配置较低,执行了20分钟,生产估计15分钟左右。

[root@www.cndba.cn software]# chown grid:oinstall /u03/software/37957391 -R
[root@www.cndba.cn software]# /u03/app/19.3.0/grid/OPatch/opatchauto apply /u03/software/37957391 -oh /u03/app/19.3.0/grid
……
Performing prepatch operations on CRS - bringing down CRS service on home /u03/app/19.3.0/grid
Prepatch operation log file location: /u03/app/grid/crsdata/rac1/crsconfig/crs_prepatch_apply_inplace_rac1_2025-07-23_02-08-23PM.log
CRS service brought down successfully on home /u03/app/19.3.0/grid
Start applying binary patch on home /u03/app/19.3.0/grid
Binary patch applied successfully on home /u03/app/19.3.0/grid
Running rootadd_rdbms.sh on home /u03/app/19.3.0/grid
Successfully executed rootadd_rdbms.sh on home /u03/app/19.3.0/grid
Performing postpatch operations on CRS - starting CRS service on home /u03/app/19.3.0/grid
……

注意:
打的过程会自动关闭节点1的crs,节点2正常运行。

检查GI是否成功:
[grid@www.cndba.cn ~]$ /u03/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)

8.2 节点2执行

[root@www.cndba.cn software]# chown grid:oinstall /u03/software/37957391 -R
[root@www.cndba.cn software]# /u03/app/19.3.0/grid/OPatch/opatchauto apply /u03/software/37957391 -oh /u03/app/19.3.0/grid

8.3 查看Patch

检查GI是否成功:
[grid@www.cndba.cn ~]$  /u03/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)

9 应用DB 的RU 和 OJVM

同样先打rac1的DB HOME,完成后再打rac2。http://www.cndba.cn/dave/article/131696

注意:http://www.cndba.cn/dave/article/131696http://www.cndba.cn/dave/article/131696

  1. 需要使用oracle用oracle_home的opatchauto。
  2. 使用root用户执行。
  3. 修改pathch 的owner。
  4. DB RU 和 OJVM都需要先停掉对应的db 实例,否则会报错。

pathch 文件可以直接使用GI里面的,也可以使用单独下载的,都一样。 http://www.cndba.cn/dave/article/131696http://www.cndba.cn/dave/article/131696

OJVM 补丁属于数据库层组件,与 Java 虚拟机相关的数据库功能(如 DBMS_JAVA)直接关联。因此补丁作用于数据库实例的 ORACLE_HOME 目录。 使用ORACLE HOME执行。http://www.cndba.cn/dave/article/131696

9.1 节点1执行

9.1.1 停实例
[grid@www.cndba.cn ~]$ srvctl stop instance -node rac1

9.1.2 打DB RU
我这里配置较低,执行了13分钟,生产估计10分钟以内。

[root@www.cndba.cn software]# chown oracle:oinstall /u03/software/37957391/37960098 -R
[root@www.cndba.cn software]# /u03/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u03/software/37957391/37960098 -oh /u03/app/oracle/product/19.3.0/db_1
……
OPatchauto session completed at Wed Jul 23 16:00:59 2025
Time taken to complete the session 13 minutes, 32 seconds

如果有报错,修复错误,在继续:
[root@www.cndba.cn 37957391]# export ORACLE_HOME=/u03/app/oracle/product/19.3.0/db_1
[root@www.cndba.cn 37957391]# /u03/app/oracle/product/19.3.0/db_1/OPatch/opatchauto resume
9.1.3 打OJVM
[oracle@www.cndba.cn 37847857]$ pwd
/u03/software/37847857
[oracle@www.cndba.cn 37847857]$ /u03/app/oracle/product/19.3.0/db_1/OPatch/opatch apply

按提示输入y,y,10分钟左右结束。 

这里如果报错,修复后直接重复执行apply即可,没有resume选项。

9.1.4 启动实例
然后启动rac1实例,在去打节点2,保障业务不中断:
[grid@www.cndba.cn ~]$ srvctl start instance -node rac1


9.1.5 查看Patch
[oracle@www.cndba.cn 37847857]$ /u03/app/oracle/product/19.3.0/db_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.
[oracle@www.cndba.cn 37847857]$

9.2 节点2执行

节点2操作和节点1一样。 我们这里简单记录命令。

[grid@www.cndba.cn ~]$ srvctl stop instance -node rac2

[root@www.cndba.cn software]# chown oracle:oinstall /u03/software/37957391/37960098 -R

[root@www.cndba.cn software]# /u03/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u03/software/37957391/37960098 -oh /u03/app/oracle/product/19.3.0/db_1

[root@www.cndba.cn software]# chown oracle:oinstall 37847857 -R
[oracle@www.cndba.cn 37847857]$ pwd
/u03/software/37847857
[oracle@www.cndba.cn 37847857]$ /u03/app/oracle/product/19.3.0/db_1/OPatch/opatch apply

[grid@www.cndba.cn ~]$ srvctl start instance -node rac2

9.3 加载SQL到数据库

RAC环境,只需要在一个节点执行就可以了。我们这里在节点1中执行。
注意:

http://www.cndba.cn/dave/article/131696

  1. 使用Oracle 用户执行
  2. 需要打开所有PDB,未打开的PDB不会生效。
[oracle@www.cndba.cn ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jul 23 17:00:18 2025
Version 19.28.0.0.0
SQL> alter pluggable database all open;
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DAVE                           READ WRITE NO

这里需要执行40分钟左右:
[oracle@www.cndba.cn ~]$ $ORACLE_HOME/OPatch/datapatch -verbose
……
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED DAVE
    No interim patches need to be rolled back
    Patch 37960098 (Database Release Update : 19.28.0.0.250715 (37960098)):
      Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.28.0.0.0 Release_Update 250705030417
    The following interim patches will be applied:
      37847857 (OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857))
……

我们这里有2个补丁,队列逐个执行的。


如果有未打开的,需要open pdb后手工指定pdb 来加载:
$ORACLE_HOME/OPatch/datapatch -verbose -apply 37960098 -force -pdbs <pdbname>
$ORACLE_HOME/OPatch/datapatch -verbose -apply 37847857 -force -pdbs <pdbname>

9.4 处理无效对象

datapatch命令会加载SQL,这个过程可能会产生无效对象。 

如下两种方法都可以修复无效对象,任选一个。

方法一:
[oracle@www.cndba.cn oneoffs]$ cd $ORACLE_HOME/rdbms/admin
[oracle@www.cndba.cn admin]$ sqlplus / as sysdba
@$ORACLE_HOME/rdbms/admin/utlrp.sql

方法二:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin $ORACLE_HOME/rdbms/admin/utlrp.sql

10 验证版本

10.1 GI

[grid@www.cndba.cn ~]$ /u03/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.

10.2 DB

[oracle@www.cndba.cn 37847857]$ /u03/app/oracle/product/19.3.0/db_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.
[oracle@www.cndba.cn 37847857]$ 



set linesize 180
col action for a15
col status for a15
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

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2296
    原创
  • 3
    翻译
  • 582
    转载
  • 198
    评论
  • 访问:8432750次
  • 积分:4477
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ