首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle 19c RAC RU15 补丁更新详细步骤

Oracle 19c RAC RU15 补丁更新详细步骤

作者头像
JiekeXu之路
发布于 2022-12-07 06:09:37
发布于 2022-12-07 06:09:37
4.5K02
代码可运行
举报
文章被收录于专栏:JiekeXu之路JiekeXu之路
运行总次数:2
代码可运行

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Oracle 19c RAC RU15 补丁更新详细步骤

目 录

下载补丁和 OPatch 停止集群件备份家目录 两节点 GI、DB OPatch 替换 复制 oui-patch.xml 到远程节点 2 注意权限 补丁分析 使用 root 用户分析补丁 33806152 OCW 分析 ACFS 补丁分析 Tomcat 补丁分析 DBWLM 补丁分析 节点一分开打各个补丁 root 自动打补丁 33806152 OCW 补丁 ACFS 补丁 Tomcat 补丁 DBWLM 补丁 节点二应用补丁 Root 打补丁 33803476 检查补丁信息 手动打补丁 OJVM 补丁 检查数据库补丁信息 补丁回退 其他补丁相关的资料

Oracle 补丁下载,更新相关的文章已经介绍过多篇了,从 11g 单机,RAC 到 19c 均有涉及,今天应该是这个系列的最后一篇文章介绍了,也来说说 Linux7 下的 Oracle 19c RAC RU15 补丁更新详细步骤,其他 RU 更新步骤均一样,都可以从 19.3 更新到最新的 RU,也可以在 RU15 的基础上更新最新的 RU17。值得一说的是最新的 RU 已经到 19.17 了,前面一篇文章介绍了今年第四季度各个版本数据库的补丁更新情况

注意:本文已经生成 PDF 文档了,有需要的可使用此链接下载 https://www.modb.pro/doc/79585

这里要注意 RU(Release Update)和 RUR (Release Update Revisions) 的区别: 1.RU 是主动,高度测试,捆绑了许多重要修复,能够使客户避免许多已知问题。 2.RUR 包含对 RU 的安全性和回退修复,将 RU 的生命周期延长两个季度。每个 RUR 只针对特定的 RU。

Release Update Introduction and FAQ (文档 ID 2285040.1) Assistant: Download Reference for Oracle Database/GI Update, Revision, PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (文档 ID 2118136.2)

但是值得注意的是:从 2022 年 10 月开始,19.17.0 及以上版本将不再提供 19c RUR。在 2023 年 1 月 Oracle Database 19c RUR 19.16.2 发布后,任何平台上都不会发布额外的RUR。详情请参阅 19c RURs 的终止及常见问题解答(注2898381.1)。

下面来一起看看 RAC 下 RU 补丁更新的两种方法,节点 1 和 节点 2 是两种不同的方法。

下载补丁和 OPatch

RU15 下载(包括 GI 和 DB 以及 OJVM 补丁包):https://www.modb.pro/download/541101

RU17 下载(包括 GI 和 DB 以及 OJVM 补丁包):https://www.modb.pro/download/1033988

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--19c Patch 33803476 - GI Release Update 19.15.0.0.220419

p33859214_190000_Linux-x86-64.zip
OPatch 12.2.0.1.30 for DB 12.2.0.1.0 (Apr 2022) 
p6880880_122010_Linux-x86-64.zip

上传到 /u01/backup 然后使用 grid 用户解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 777 p33859214_190000_Linux-x86-64.zip
(+ASM1)$ unzip p33859214_190000_Linux-x86-64.zip
(+ASM1)$ scp -r 33859214  rac19c-r2:/u01/backup
(+ASM1)$ scp -r OPatch rac19c-r2:/u01/backup

可参考文档: https://www.modb.pro/doc/46149 https://mp.weixin.qq.com/s/VGyb-UjbI1IFo1llEfVduQ

停止集群件备份家目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
----两节点分别操作
/u01/app/19.0.0/grid/bin/crsctl stop crs
tar -zcvf /u01/app.tar.gz /u01/app
/u01/app/19.0.0/grid/bin/crsctl start crs

两节点 GI、DB OPatch 替换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
----# 表示 root 用户,$ 表示 Oracle 用户提示符,(ASM1)$ 表示 grid 用户
# cd /u01/app/19.0.0/grid/
# mv OPatch OPatch.bak19
(ASM1)$ unzip p6880880_122010_Linux-x86-64.zip
# cp -r OPatch /u01/app/19.0.0/grid/
# chown grid:oinstall -R /u01/app/19.0.0/grid/OPatch

$ opatch version 
OPatch Version: 12.2.0.1.30

OPatch succeeded.

DB:
$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_bak19
cp -r /u01/backup/OPatch ./

复制 oui-patch.xml 到远程节点 2 注意权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(+ASM2)$ cd /u01/app/oraInventory/ContentsXML/
(+ASM2)$ scp -p rac19c-r1:/u01/app/oraInventory/ContentsXML/oui-patch.xml ./

oracle inventory 验证
$ <ORACLE_HOME>/OPatch/opatch lsinventory -detail -oh <ORACLE_HOME>

如果是 RAC 环境分别指定 GI_HOME 和 ORACLE_HOME

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(+ASM1)$ opatch lsinventory -detail -oh $ORACLE_HOME
(DB1)$ opatch lsinventory -detail -oh $ORACLE_HOME

(+ASM2)$ opatch lsinventory -detail -oh $ORACLE_HOME
(DB2)$ opatch lsinventory -detail -oh $ORACLE_HOME

空间检查和补丁冲突检查这里就不做了,因为是新环境,这些都没有问题。 如果有需要可参考我以前的文章或者补丁 README.html 。

补丁分析

这里一定要看补丁 README.html 的各个补丁介绍,有的只涉及到 DB,有的只涉及到 GI,有的只是 OJVM,例如 33806152 这个补丁则 GI 和 DB 都涉及,也是主要补丁;33815596 这个则是 OCW 这个补丁则 GI 和 DB 都可以使用;33815607 ACFS 补丁,33911149 Tomcat 补丁,33575402 补丁,这三个补丁仅在 GI 上适用,且不支持 HP-UX Itanium 和 Linux on IBM System z 系统,我这里是 RHEL7 没有问题。

补丁号

描述

适用于

33806152

Database Release Update19.15.0.0.220419

Both Oracle home and Grid home

33815596

OCW Release Update 19.15.0.0.220419

Both Oracle home and Grid home

33815607

ACFS Release Update 19.15.0.0.220419

Only Grid home

33911149

Tomcat Release Update 19.0.0.0.0

Only Grid home

33575402

Tomcat Release Update 19.0.0.0.0

Only Grid home

使用 root 用户分析补丁 33806152

提前分析补丁,可以避免一些错误,如下检测出来 GI 和 DB 的 OPatch 版本不一样;注意这里的路径深入到 33803476 即可,不必更深一层,不然就需要如下办法一个个子补丁去分析和单独应用,节点 2 则正常到 33803476 层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33806152 -analyze

打补丁分析补丁时,个人建议将连接到操作系统 Oracle 或者 grid 用户的会话都退出到 root 或者直接断开,以前遇到过由于有连接导致打补丁失败。下面是一个完整的日志输出,其他补丁日志输出则省略。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33806152 -analyze

OPatchauto session is initiated at Wed May 11 10:57:46 2022

System initialization log file is /u01/app/19.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2022-05-11_10-57-48AM.log.

Following home(s) will not be included as part of current opatchauto session as it's software only RAC home:
Home path:/u01/app/oracle/product/19.0.0/dbhome_1, Host:rac19c-r2

Session log file is /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/opatchauto2022-05-11_10-58-35AM.log
The id for this session is HD5U

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/19.0.0/dbhome_1

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19.0.0/grid
Patch applicability verified successfully on home /u01/app/19.0.0/grid

Patch applicability verified successfully on home /u01/app/oracle/product/19.0.0/dbhome_1

Executing patch validation checks on home /u01/app/19.0.0/grid
Patch validation checks successfully completed on home /u01/app/19.0.0/grid

Executing patch validation checks on home /u01/app/oracle/product/19.0.0/dbhome_1
Patch validation checks successfully completed on home /u01/app/oracle/product/19.0.0/dbhome_1

Verifying SQL patch applicability on home /u01/app/oracle/product/19.0.0/dbhome_1
SQL patch applicability verified successfully on home /u01/app/oracle/product/19.0.0/dbhome_1

OPatchAuto successful.

--------------------------------Summary------------------------------

Analysis for applying patches has completed successfully:

Host:rac19c-r1
CRS Home:/u01/app/19.0.0/grid
Version:19.0.0.0.0

==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_10-58-54AM_1.log

Host:rac19c-r1
RAC Home:/u01/app/oracle/product/19.0.0/dbhome_1
Version:19.0.0.0.0

==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_10-58-55AM_1.log

OPatchauto session completed at Wed May 11 10:59:38 2022
Time taken to complete the session 1 minute, 53 seconds
OCW 分析
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33815596 -analyze
--省略日志输出 详细信息可查看此文档https://www.modb.pro/doc/79585
ACFS 补丁分析
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@rac19c-r1 33803476]# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33815607 -analyze

--省略日志输出,详细信息可查看此文档https://www.modb.pro/doc/79585
Reason: /u01/backup/33859214/33803476/33815607 is not required to be applied to oracle home /u01/app/oracle/product/19.0.0/dbhome_1

Tomcat 补丁分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33911149 -analyze

--省略日志输出
Reason: /u01/backup/33859214/33803476/33911149 is not required to be applied to oracle home /u01/app/oracle/product/19.0.0/dbhome_1

DBWLM 补丁分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33575402 -analyze

--省略日志输出
Reason: /u01/backup/33859214/33803476/33575402 is not required to be applied to oracle home /u01/app/oracle/product/19.0.0/dbhome_1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
节点一分开打各个补丁

root 自动打补丁 33806152

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33806152

OPatchAuto successful.

--------------------------------Summary------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac19c-r1
RAC Home:/u01/app/oracle/product/19.0.0/dbhome_1
Version:19.0.0.0.0
Summary:

==Following patches were SUCCESSFULLY applied:

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_11-36-47AM_1.log

Host:rac19c-r1
CRS Home:/u01/app/19.0.0/grid
Version:19.0.0.0.0
Summary:

==Following patches were SUCCESSFULLY applied:

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_11-41-34AM_1.log

OPatchauto session completed at Wed May 11 12:04:15 2022
Time taken to complete the session 32 minutes, 25 seconds

OCW 补丁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33815596    

ACFS 补丁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@rac19c-r1 33803476]# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33815607 -oh /u01/app/19.0.0/grid

Tomcat 补丁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33911149 -oh /u01/app/19.0.0/grid

DBWLM 补丁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476/33575402 -oh /u01/app/19.0.0/grid

OPatchauto session is initiated at Wed May 11 15:03:56 2022

System initialization log file is /u01/app/19.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2022-05-11_03-04-00PM.log.

Session log file is /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/opatchauto2022-05-11_03-04-45PM.log
The id for this session is 1GY2

Executing OPatch prereq operations to verify patch applicability on home /u01/app/19.0.0/grid
Patch applicability verified successfully on home /u01/app/19.0.0/grid

Executing patch validation checks on home /u01/app/19.0.0/grid
Patch validation checks successfully completed on home /u01/app/19.0.0/grid

Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/19.0.0/grid
Prepatch operation log file location: /u01/app/grid/crsdata/rac19c-r1/crsconfig/crs_prepatch_apply_inplace_rac19c-r1_2022-05-11_03-05-08PM.log
CRS service brought down successfully on home /u01/app/19.0.0/grid

Start applying binary patch on home /u01/app/19.0.0/grid
Binary patch applied successfully on home /u01/app/19.0.0/grid

Performing postpatch operations on CRS - starting CRS service on home /u01/app/19.0.0/grid
Postpatch operation log file location: /u01/app/grid/crsdata/rac19c-r1/crsconfig/crs_postpatch_apply_inplace_rac19c-r1_2022-05-11_03-07-52PM.log
CRS service started successfully on home /u01/app/19.0.0/grid

OPatchAuto successful.

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac19c-r1
CRS Home:/u01/app/19.0.0/grid
Version:19.0.0.0.0
Summary:

==Following patches were SUCCESSFULLY applied:

Patch: /u01/backup/33859214/33803476/33575402
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_15-07-26PM_1.log

OPatchauto session completed at Wed May 11 15:10:32 2022
Time taken to complete the session 6 minutes, 36 seconds

节点二应用补丁

直接分析 33803476 整个补丁集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476 -analyze

OPatchAuto successful.
--------------------------------Summary--------------------------------
Analysis for applying patches has completed successfully:

Host:rac19c-r2
CRS Home:/u01/app/19.0.0/grid
Version:19.0.0.0.0

==Following patches were SUCCESSFULLY analyzed to be applied:

Patch: /u01/backup/33859214/33803476/33815596
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-47-44PM_1.log

Patch: /u01/backup/33859214/33803476/33815607
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-47-44PM_1.log

Patch: /u01/backup/33859214/33803476/33575402
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-47-44PM_1.log

Patch: /u01/backup/33859214/33803476/33911149
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-47-44PM_1.log

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-47-44PM_1.log

OPatchauto session completed at Wed May 11 17:48:08 2022
Time taken to complete the session 2 minutes, 20 seconds

Root 打补丁 33803476

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476

注意看这里提示自动打失败了,但是根绝这个错误看不出问题,那么就需要看上图中标黄的日志了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
more /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_17-55-12PM_1.log
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

检查日志发现节点 2 补丁 33815596 缺少文件 ocrcheck.bin
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ll /u01/backup/33859214/33803476/33815596/files/bin/ocrcheck.bin
ls: cannot access /u01/backup/33859214/33803476/33815596/files/bin/ocrcheck.bin: No such file or directory

很是奇怪,补丁包是从节点1 解压后 scp 过来的,怎么会出现缺少文件的问题呢?那就直接 scp zip 包然后在节点 2 解压吧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RAC1$ scp p33859214_190000_Linux-x86-64.zip rac19c-r2:/u01/backup

RAC2# chown grid:oinstall p33859214_190000_Linux-x86-64.zip
su - grid
(+ASM2)$ unzip p33859214_190000_Linux-x86-64.zip
(+ASM2)$ chmod 777 -R 33859214
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
然后使用 root 继续打补丁吧。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476

--------------------------------Summary--------------------------------

Patching is completed successfully. Please find the summary as follows:

Host:rac19c-r2
CRS Home:/u01/app/19.0.0/grid
Version:19.0.0.0.0
Summary:

==Following patches were SUCCESSFULLY applied:

Patch: /u01/backup/33859214/33803476/33575402
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_18-37-20PM_1.log

Patch: /u01/backup/33859214/33803476/33806152
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_18-37-20PM_1.log

Patch: /u01/backup/33859214/33803476/33815596
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_18-37-20PM_1.log

Patch: /u01/backup/33859214/33803476/33815607
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_18-37-20PM_1.log

Patch: /u01/backup/33859214/33803476/33911149
Log: /u01/app/19.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2022-05-11_18-37-20PM_1.log

OPatchauto session completed at Wed May 11 18:46:27 2022
Time taken to complete the session 11 minutes, 49 seconds

注意:如果有其他问题,补丁已经开始进行了,中途出现问题报错,需检查日志修复问题后使用 resume 执行补丁。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /u01/app/19.0.0/grid/OPatch/opatchauto resume

检查补丁信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(+ASM1)$ opatch lspatches
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)
33911149;TOMCAT RELEASE UPDATE 19.0.0.0.0 (33911149)
33815607;ACFS RELEASE UPDATE 19.15.0.0.0 (33815607)
33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596)
33806152;Database Release Update : 19.15.0.0.220419 (33806152)

(+ASM2)$ opatch lspatches
33911149;TOMCAT RELEASE UPDATE 19.0.0.0.0 (33911149)
33815607;ACFS RELEASE UPDATE 19.15.0.0.0 (33815607)
33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596)
33806152;Database Release Update : 19.15.0.0.220419 (33806152)
33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)

检查发现 RAC2 ACFS 和 DBWLM 没有变过来而已,不过已经打上补丁了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RAC1$ opatch lspatches
33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596)
33806152;Database Release Update : 19.15.0.0.220419 (33806152)

RAC2$ opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

手动打补丁

检查发现 RAC2 DB 没有打上补丁,那么手动来打吧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# chown -R oracle:oinstall 33859214 

su - oracle

RAC2$ /u01/backup/33859214/33803476/33815596/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/19.0.0/dbhome_1

RAC2$ opatch apply -oh /u01/app/oracle/product/19.0.0/dbhome_1 /u01/backup/33859214/33803476/33806152

RAC2$ opatch apply -oh /u01/app/oracle/product/19.0.0/dbhome_1 /u01/backup/33859214/33803476/33815596

RAC2$ /u01/backup/33859214/33803476/33815596/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/19.0.0.0/dbhome_1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Oracle 用户再次检查 19.15 已没有问题了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ opatch lspatches
33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596)
33806152;Database Release Update : 19.15.0.0.220419 (33806152)

OPatch succeeded.

OJVM 补丁

检查 OJVM 是否安装,是否使用? 这个很早之前也说过了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> SELECT version, status FROM dba_registry WHERE comp_id='JAVAVM';
16:55:52 SQL> 
VERSION                        STATUS
------------------------------ --------------------------------------------
19.0.0.0.0                     VALID

SQL> select count(*) from x$kglob where KGLOBTYP = 29 OR KGLOBTYP = 56;

  COUNT(*)
----------
         0
         
--为了确定 OJVM 的用户,我们可以通过下面的 SQL 检查 V$SESSION 来显示数据库中调用 Java 的 SERVICE, PROGRAM 或 user。此 SQL 将只显示活动用户(因此可能必须定期运行以充分收集数据)。

col service_name format a20
col username format a20
col program format a20
set num 8
select sess.service_name, sess.username,sess.program, count(*)
from
v$session sess,
dba_users usr,
x$kgllk lk,
x$kglob
where kgllkuse=saddr
and kgllkhdl=kglhdadr
and kglobtyp in (29,56)
and sess.user# = usr.user_id
and usr.oracle_maintained = 'N'      -- omit this line on 11.2.0.4
group by sess.service_name, sess.username, sess.program
order by sess.service_name, sess.username, sess.program;

--如果您希望报告除您自己的应用程序之外正在使用的 Oracle 实用程序(以便Oracle 实用程序也可以暂停),请使用以下 SQL SELECT 语句。即时编译器(JIT)在滚动过程中停止。

col service_name format a20
col username format a20
col program format a20
set num 8
select sess.service_name, sess.username,sess.program, count(*)
from
v$session sess,
x$kgllk lk,
x$kglob
where kgllkuse=saddr
and kgllkhdl=kglhdadr
and kglobtyp in (29,56)
group by sess.service_name, sess.username, sess.program
order by sess.service_name, sess.username, sess.program;

OJVM PSU 补丁将补丁文件放到 ORACLE_HOME 中,重新链接 ORACLE_HOME,然后修改 Oracle 可执行文件。然后,Oracle 数据库编排 Java 系统类的更新。

使用 RAC 滚动步骤在主数据库中停止、清空和禁用所有使用 OJVM 的服务。应用OJVM Patch 和所有 Post SQL (Data Patch)步骤。重启数据库,启用并重启使用OJVM 的服务。通俗易懂的意思就是停止数据库实例应用 OJVM 补丁。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--关闭实例 1 
$ srvctl stop instance -d jiekedb -instance jiekedb1

--应用 OJVM 补丁
cd /u01/backup/33859214/33808367
opatch apply -local     
opatch lsinventory 

--启动实例执行 datapatch 脚本
$ srvctl start instance -d jiekedb -instance jiekedb1
cd $ORACLE_HOME/OPatch

./datapatch -verbose

检查数据库补丁信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set line 456 
col ACTION_TIME for a30
col STATUS for a10
col DESCRIPTION for a55
select PATCH_ID, PATCH_UID, TARGET_VERSION, ACTION, ACTION_TIME, STATUS, DESCRIPTION from dba_registry_sqlpatch order by action_time;

  PATCH_ID  PATCH_UID TARGET_VERSION  ACTION          ACTION_TIME                    STATUS     DESCRIPTION
---------- ---------- --------------- --------------- ------------------------------ ---------- -------------------------------------------------------
  29517242   22862832 19.3.0.0.0      APPLY           09-MAY-22 05.18.12.723309 PM   SUCCESS    Database Release Update : 19.3.0.0.190416 (29517242)
  33806152   24713297 19.15.0.0.0     APPLY           11-MAY-22 12.04.14.679266 PM   SUCCESS    Database Release Update : 19.15.0.0.220419 (33806152)
  33808367   24680225 19.15.0.0.0     APPLY           11-MAY-22 05.36.54.859534 PM   SUCCESS    OJVM RELEASE UPDATE: 19.15.0.0.220419 (33808367)

补丁回退

回退补丁也比较简单,具体请查看 README.html 。新安装的数据库一般情况下是不需要回退的,这里以备不时之需,请使用 root 用户执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# <GI_HOME>/OPatch/opatchauto rollback <UNZIPPED_PATCH_LOCATION>/33803476

然后启动数据库,使用 Oracle 用户仅在其中一个节点执行下面脚本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd $ORACLE_HOME/OPatch
./datapatch -verbose

然后检查日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
33806152_rollback_<database SID>_<CDB name>_<timestamp>.log

然后编译无效对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd $ORACLE_HOME/rdbms/admin
sqlplus / AS SYSDBA
SQL> @utlrp.sql

如果是单机环境,关闭数据库实例和监听,直接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
opatch rollback -id 33806152

其他补丁相关的资料

https://mp.weixin.qq.com/s/_Z8boXE3ZTxq37rSAyZGeA https://mp.weixin.qq.com/s/VGyb-UjbI1IFo1llEfVduQ https://mp.weixin.qq.com/s/2DoBV-8PsoYENgwM3BAIaQ https://mp.weixin.qq.com/s/zS4aE3TfhbMwDk37nIEGfg https://mp.weixin.qq.com/s/C0YbdGs2SVxqDuTm1g83fw https://mp.weixin.qq.com/s/0jPYvtfFezGLhq-S-9RqGQ https://mp.weixin.qq.com/s/Q45cfsRz1Oa4dSzi8_2Ktg https://www.modb.pro/download/1033988 https://www.modb.pro/download/541101 https://www.modb.pro/download/39727 https://www.modb.pro/doc/46149 https://www.modb.pro/db/27255 https://www.modb.pro/doc/1602 https://www.modb.pro/doc/4638

全文完,希望可以帮到正在阅读的你

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JiekeXu之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Java基础(四):位运算符详解
Java位运算符直接操作二进制位(bit),适用于整数类型(byte, short, int, long, char),不兼容浮点数(float, double)。其核心价值在于底层计算优化和高效算法实现(如位图、加密算法)。Java共支持7种位运算符。
Java微观世界
2025/07/17
850
Java基础(四):位运算符详解
深入解析Java中的位运算符:>和>>>
当谈到位运算符时,Java中的<<、>>和>>>运算符在源码中无疑是经常出现的。这些运算符在处理整数类型的数据时发挥着重要作用。它们主要用于对二进制位进行操作,是一种高效处理位级信息的方式。让我们深入探讨一下这些运算符的工作原理以及它们在Java中的应用。
修己xj
2023/09/03
3.8K0
深入解析Java中的位运算符:>和>>>
Java 按位运算符(&,|,^,>>,<<,>>>)
&(按位与) 定义:针对二进制,只要有一个为0,就为0。 2 & 5 = 0 2的二进制:00000000 00000000 00000000 00000010 5的二进制:00000000 00000000 00000000 00000101 |(按位或) 定义:针对二进制,只要有一个为1,就为1。 2 | 5 = 7 2的二进制:00000000 00000000 00000000 00000010 5的二进制:00000000 00000000 00000000 00000101 ^(按位
Jacob丶
2020/08/05
7850
Luabit的位运算
Lua提供了bit库,可以对变量数据进行位运算,在某些应有场景,我们得确需要在lua中对数据进行位移,或是进行“与,或,非”,进制转换等操作。
糖果
2019/11/20
2.4K0
深入理解JavaScript位运算符
说起位运算符,各位一定是知道和二进制有关。但是我觉得,还是有大部分朋友对于位运算符还是比较陌生的,因为在实际的需求开发中这玩意几乎都没怎么用过,所以也就没有去过多的了解这东西。
吴佳
2022/09/26
3240
【图文】什么是php位运算与二进制
终上:计算一个数的步骤就是原码-->反码-->补码-->根据位运算符计算得到补码-->反码-->原码-->再得到我们想要的值
码农编程进阶笔记
2021/09/09
6190
【图文】什么是php位运算与二进制
【修正】深入理解C#位运算:掌握位运算符的妙用
C#位运算是一种强大的工具,可以在处理二进制数据和位操作时发挥重要作用。通过使用位运算符,我们可以对整数进行位级别的操作,如位与、位或、位异或和位取反等。位运算可以用于优化性能、压缩数据、实现位掩码和位标志等。了解和掌握C#位运算的基本原理和常见应用场景,将使我们能够更高效地处理二进制数据,并在某些情况下提高代码的性能和可读性。通过深入理解C#位运算,我们可以在编程中发挥更大的创造力和灵活性。
沙漠尽头的狼
2023/11/13
5420
【修正】深入理解C#位运算:掌握位运算符的妙用
C语言——操作符
在前面,我们见到了 +, -, * ,/ , < , > , =这些符号,其实它们的名字叫做操作符。按照功能的不同我们可以对它进行一个简单的分类
用户11352420
2024/11/07
1550
C语言——操作符
7. Groovy 运算符-位运算符学习
本篇是Groovy学习第7篇内容。上一篇学习了算术运算,关系运算和逻辑运算。今天接着上一篇,继续学习Groovy中的运算符相关知识。
zinyan.com
2022/12/07
5810
【c语言】运算符汇总(万字解析)
为了促进大家深入理解C语言并提升学习效率,本博客作者将对C语言中常用运算符的功能及其使用方法进行全面梳理,同时整合归纳这些运算符的优先级、结合性以及表达式求值规则。
ephemerals__
2024/10/30
1.3K0
【c语言】运算符汇总(万字解析)
位运算符及其应用
其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
黄规速
2022/04/14
8020
java 位运算与实战
在二进制里面总共有32位,0-31,第31位是表示当前数值的正负,当时0的时候表示这个数值是正数,当是1表示这个数值是负数。
山行AI
2019/06/28
2K0
位运算符的操作机制
        位操作是程序操作中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).
渴望飞翔的猪
2022/07/17
5650
Java的位运算符详解实例。
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。
7537367
2020/08/14
6830
C语言位运算符详解「建议收藏」
C语言既具有高级语言的特点,又具有低级语言的特性,如支持位运算就是其具体体现。这是因为,C语言最初是为取代汇编语言设计系统软件而设计的,因此C语言必须支持位运算等汇编操作。位运算就是对字节或字内的二进制数位进行测试、抽取、设置或移位等操作。其操作对象不能是float、double、long double等其他数据类型,只能是char和int类型。 C语言提供如下表格的六种位运算符,其中,只有按位取反运算符为单目运算符,其他运算符都是双目运算符。
全栈程序员站长
2022/11/10
3.8K0
C语言位运算符详解「建议收藏」
javascript 中的位运算符
位与(&)、位或(|)、位异或(^)、非位(~) 左移(<<)、右移(>>)、无符号右移(>>>) &(位与) “&”运算符(位与)用于对两个二进制操作数,逐位取与 第一个数的位值 第二个数的位值 运算结果 1 1 1 1 0 0 0 1 0 0 0 0 |(位或) “|”运算符(位或)用于对两个二进制操作数,逐位取或 第一个数的位值 第二个数的位值 运算结果 1 1 1 1 0 1 0 1 1 0 0 0 ^(位异或) “^”运算符(位异或)用于对两个二进制操作数,逐位取异或 位数据相同得 0,不同得
前端小书童
2020/09/24
1K0
C++20 中位移位运算符的统一行为:深入解析与实践指南
在 C++ 的发展历程中,位移位运算符(<< 和 >>)一直是语言的核心特性之一,广泛应用于性能优化、底层硬件操作和数据压缩等领域。然而,在 C++20 之前,这些运算符的行为在某些情况下存在不确定性,尤其是涉及负数移位或移位数量超出操作数位宽时。C++20 对位移位运算符的行为进行了统一和规范,解决了这些问题,使得代码更加可移植和安全。
码事漫谈
2025/03/04
1860
C++20 中位移位运算符的统一行为:深入解析与实践指南
被忽略的位运算符总结
曾经的我还是太年轻了, 基础不扎实还自以为是, 看到位运算符一节就以为是逻辑运算, 结果跳过没看了, 漏了很多知识. 果然 LeetCode 没白刷呀, 接下来是总结.
Ewdager
2020/07/14
7680
c语言中位运算符_位运算符的用法
C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言运算符的用法和一些常用技巧.
全栈程序员站长
2022/11/09
1K0
java位运算符
Java中的位运算符是用于对二进制数进行操作的运算符。在计算机内部,所有的数据都是以二进制形式存储和处理的,因此使用位运算符可以高效地进行位操作,包括位移、位与、位或、位非、位异或等操作。本文将介绍Java中的位运算符,包括其语法、操作和示例。
堕落飞鸟
2023/04/03
7070
相关推荐
Java基础(四):位运算符详解
更多 >
LV.2
这个人很懒,什么都没有留下~
目录
  • 下载补丁和 OPatch
  • 停止集群件备份家目录
  • 两节点 GI、DB OPatch 替换
  • 复制 oui-patch.xml 到远程节点 2 注意权限
  • 补丁分析
    • 使用 root 用户分析补丁 33806152
    • OCW 分析
    • ACFS 补丁分析
  • root 自动打补丁 33806152
  • 检查补丁信息
  • 手动打补丁
  • OJVM 补丁
  • 检查数据库补丁信息
  • 补丁回退
  • 其他补丁相关的资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档