热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RAC19.3补丁安装实战

前言19C已经发布3年多了,生产环境中也使用的越来越多。随着等保要求的进一步提高,DB的补丁升级也成了很多DBA平时工作的一部分。从12.2.0.2开
前言

19C已经发布3年多了,生产环境中也使用的越来越多。随着等保要求的进一步提高,DB的补丁升级也成了很多DBA平时工作的一部分。
从12.2.0.2开始,Oracle Database开始采用RU(Release Update)和RUR(Release Update Revision)的方式发布补丁。关于RU和RUR,网上也有很多博主做了详细说明,今天的重点也不是这一块。下面列出了官方的链接说明,有兴趣的同学可以自行前往查阅

https://support.oracle.com/knowledge/Oracle%20Database%20Products/19202110_9.html
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=177576139684538&id=2289879.1&_adf.ctrl-state=10zxif4dm7_55


实战记录

实验环境


节点名操作系统数据库版本
db1rhel7.619.3
db2rhel7.619.3

RU版本

p32895426_190000_Linux-x86-64.zip
p32876380_190000_Linux-x86-64.zip


补丁下载并解压

下载地址 MOS ID 2118136.2



  • 上传补丁



p32876380_190000_Linux-x86-64.zip --OJVM
p32895426_190000_Linux-x86-64.zip --GI
p6880880_190000_Linux-x86-64.zip --Opatch


  • 解压

grid用户解压RU和更新Opatch,2个节点都需要执行下面步骤

[grid@db1:/soft]$ unzip p32895426_190000_Linux-x86-64.zip[grid@db1:/u01/app/19.3.0/grid]$ opatch version
OPatch Version: 12.2.0.1.17
OPatch succeeded.[root@db1:/u01/app/19.3.0/grid]$ mv OPatch/ OPatch_old
[root@db1:/soft]$ unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/19.3.0/grid/
[root@db1:/u01/app/19.3.0/grid]$ chown -R grid:oinstall OPatch
[root@db1:/u01/app/19.3.0/grid]$ ll -d OPatch*
drwxr-x--- 15 grid oinstall 4096 Jul 30 22:36 OPatch
drwxr-x--- 14 grid oinstall 4096 Jan 18 10:45 OPatch_old[root@db1:/u01/app/oracle/product/19.3.0/db]$ mv OPatch/ OPatch_old
[root@db1:/soft]$ unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db/
[root@db1:/u01/app/oracle/product/19.3.0/db]$ chown -R oracle:oinstall OPatch
[root@db1:/u01/app/oracle/product/19.3.0/db]$ ll -d OPatch*
drwxr-x--- 15 oracle oinstall 4096 Jul 30 22:36 OPatch
drwxr-x--- 14 oracle oinstall 4096 Jan 18 11:22 OPatch_old[grid@db1:/home/grid]$ opatch version
OPatch Version: 12.2.0.1.27
OPatch succeeded.[oracle@db1:/home/oracle]$ opatch version
OPatch Version: 12.2.0.1.27
OPatch succeeded.

🔉 注意:UNZIPPED_PATCH_LOCATION目录应具有ORA_INSTALL组的读取权限;更新Opatch时注意目录权限;RU32895426需要12.2.0.1.25或更高版本的Opatch

OPatch Conflict Check

在所有节点校验是否存在与32895426冲突的补丁

  • For Grid Infrastructure home, as home user

[grid@db1:/home/grid]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32904851/
[grid@db1:/home/grid]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32916816/
[grid@db1:/home/grid]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32915586/
[grid@db1:/home/grid]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32918050/

  • For Oracle home, as home user

[oracle@db1:/home/oracle]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32904851/
[oracle@db1:/home/oracle]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/32895426/32916816/

应用补丁

补丁应用顺序:节点1GI ⏩节点2GI⏩节点1DB⏩节点2DB

[root@db1:/soft]$ /u01/app/19.3.0/grid/OPatch/opatchauto apply -oh /u01/app/19.3.0/grid/ /soft/32895426/
[root@db2:/soft]$ /u01/app/19.3.0/grid/OPatch/opatchauto apply -oh /u01/app/19.3.0/grid/ /soft/32895426/
[root@db1:/soft]$ /u01/app/oracle/product/19.3.0/db/OPatch/opatchauto apply -oh /u01/app/oracle/product/19.3.0/db/ /soft/32895426/


节点1DB的RU更新成功
📢 请勿直接应用节点2的DB补丁,这里有大坑

先看一下节点1和节点2的oui-patch.xml文件权限

[root@db1:/u01/app/oraInventory/ContentsXML]$ ls -l oui-patch.xml
-rw-rw---- 1 grid oinstall 174 Jan 20 11:01 oui-patch.xml
[root@db2:/u01/app/oraInventory/ContentsXML]$ ls -l oui-patch.xml
-rw-r--r-- 1 grid oinstall 174 Jan 19 22:37 oui-patch.xml

🐱这里Eason先不做调整,将错就错,看看坑到底有多深

[root@db2:/root]$ /u01/app/oracle/product/19.3.0/db/OPatch/opatchauto apply -oh /u01/app/oracle/product/19.3.0/db/ /soft/32895426/


报错信息:apply failed: java.io.IOException: oracle.sysman.oui.patch.PatchException: java.io.FileNotFoundException: /u01/app/oraInventory/ContentsXML/oui-patch.xml (Permission denied)

[root@db2:/u01/app/oraInventory/ContentsXML]$ ll oui-patch.xml*
-rw-r--r-- 1 grid oinstall 174 Jan 19 22:37 oui-patch.xml
-rw-r--r-- 1 oracle oinstall 174 Jan 19 22:37 oui-patch.xml.back#按照节点1的权限修改oui-patch.xml,重新applyauto resume
[root@db2:/u01/app/oraInventory/ContentsXML]$ chmod 664 oui-patch.xml
[root@db2:/u01/app/oraInventory/ContentsXML]$ ll oui-patch.xml*
-rw-rw-r-- 1 grid oinstall 174 Jan 19 22:37 oui-patch.xml
-rw-r--r-- 1 oracle oinstall 174 Jan 19 22:37 oui-patch.xml.back
[root@db2:/u01/app/oraInventory/ContentsXML]$ /u01/app/oracle/product/19.3.0/db/OPatch/opatchauto resume


💣又出错了。不要慌,继续按照提示修复错误:ORACLE_HOME/inventory/oneoffs/32904851 is corrupted. PatchObject constructor: Input file “/u01/app/oracle/product/19.3.0/db/inventory/oneoffs/32904851/etc/config/actions” or “/u01/app/oracle/product/19.3.0/db/inventory/oneoffs/32904851/etc/config/inventory” does not exist.

[root@db2:/u01/app/oracle/product/19.3.0/db/inventory/oneoffs]$ ll
total 0
drwxr-x--- 4 oracle oinstall 29 Jan 18 11:23 29517242
drwxr-x--- 4 oracle oinstall 29 Jan 18 11:24 29585399

💊 缺少对应的文件包,怎么办?从1号节点拷贝

[oracle@db1:/u01/app/oracle/product/19.3.0/db/inventory/oneoffs]$ scp -r 329* oracle@db2:/u01/app/oracle/product/19.3.0/db/inventory/oneoffs/
inventory.xml 100% 647KB 43.2MB/s 00:00
actions.xml 100% 5981KB 47.6MB/s 00:00
inventory.xml 100% 139KB 7.0MB/s 00:00
actions.xml 100% 98KB 17.1MB/s 00:00 [root@db2:/u01/app/oracle/product/19.3.0/db/inventory/oneoffs]$ ll
total 0
drwxr-x--- 4 oracle oinstall 29 Jan 18 11:23 29517242
drwxr-x--- 4 oracle oinstall 29 Jan 18 11:24 29585399
drwxr-xr-x 4 oracle oinstall 29 Jan 20 16:12 32904851
drwxr-xr-x 4 oracle oinstall 29 Jan 20 16:12 32916816

继续应用补丁

[root@db2:/u01/app/oracle/product/19.3.0/db/inventory/oneoffs]$ /u01/app/oracle/product/19.3.0/db/OPatch/opatchauto resume


如果在应用补丁过程中一直resume不成,你也可以opatchaotu rollback RU,修改好oui-patch.xml文件权限后重新opatchauto apply

加载sql脚本

RAC环境只需要在一个节点运行。non-cdb的库直接在数据库中运行即可;cdb的数据库需要将所有PDB open后运行。

[oracle@db1:/home/oracle]$ cd /u01/app/oracle/product/19.3.0/db/OPatch
[oracle@db1:/u01/app/oracle/product/19.3.0/db/OPatch]$ ./datapatch -verbose



更新无效对象

[oracle@db1:/home/oracle]$ cd /u01/app/oracle/product/19.3.0/db/rdbms/admin/
[oracle@db1:/u01/app/oracle/product/19.3.0/db/rdbms/admin]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 21 15:47:01 2022
Version 19.12.0.0.0Copyright (c) 1982, 2021, Oracle. All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0sys@ORCL 15:47:01> @utlrp.sql
sys@ORCL 15:47:26> alter session set container=pdborcl;Session altered.Elapsed: 00:00:00.00
sys@ORCL 15:54:38> @utlrp.sql

应用OJVM补丁

OJVM补丁更新与前面的GI和DB的步骤大致相同,这里不做过多说明,具体查阅RU中的README.html,

#1节点
[oracle@db1:/soft]$ srvctl stop instance -d orcl -n db1
[oracle@db1:/soft]$ srvctl stop listener -node db1
[oracle@db1:/soft]$ cd 32876380/
[oracle@db1:/soft/32876380]$ opatch apply
[oracle@db1:/soft/32876380]$ srvctl start listener -node db1
[oracle@db1:/soft/32876380]$ srvctl start instance -d orcl -n db1
#2节点
[oracle@db2:/soft]$ srvctl stop instance -d orcl -n db2
[oracle@db2:/soft]$ srvctl stop listener -node db2
[oracle@db2:/soft]$ cd 32876380/
[oracle@db2:/soft/32876380]$ opatch apply
[oracle@db2:/soft/32876380]$ srvctl start listener -node db2
[oracle@db2:/soft/32876380]$ srvctl start instance -d orcl -n db2
#安装后应用脚本
[oracle@db1:/soft/32876380]$ sqlplus / as sysdba
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0
sys@ORCL 17:35:10> alter system set cluster_database=false scope=spfile;
System altered.
Elapsed: 00:00:00.40
sys@ORCL 17:35:20> exit[oracle@db1:/soft/32876380]$ srvctl stop database -d orcl
[oracle@db1:/soft/32876380]$ sqlplus / as sysdba
sConnected to an idle instance.
idle 21-JAN-22>startup
ORACLE instance started.
Total System Global Area 2449472392 bytes
Fixed Size 9141128 bytes
Variable Size 1644167168 bytes
Database Buffers 788529152 bytes
Redo Buffers 7634944 bytes
Database mounted.
Database opened.
idle 21-JAN-22> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 PDBORCL READ WRITE NO
idle 21-JAN-22> exit
[oracle@db1:/soft/32876380]$ cd /u01/app/oracle/product/19.3.0/db/OPatch
[oracle@db1:/u01/app/oracle/product/19.3.0/db/OPatch]$ ./datapatch -verbose[oracle@db1:/u01/app/oracle/product/19.3.0/db/OPatch]$ sqlplus / as sysdba
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0sys@ORCL 17:44:08> alter system set cluster_database=true scope=spfile;
System altered.Elapsed: 00:00:00.06
sys@ORCL 17:44:11> shutdown immediate.
sys@ORCL 17:44:42> exit[oracle@db1:/u01/app/oracle/product/19.3.0/db/OPatch]$ srvctl start database -d orcl
[oracle@db1:/u01/app/oracle/product/19.3.0/db/OPatch]$ cd /u01/app/oracle/product/19.3.0/db/rdbms/admin/
[oracle@db1:/u01/app/oracle/product/19.3.0/db/rdbms/admin]$ sqlplus / as sysdba
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0
sys@ORCL 17:49:40> @utlrp.sql

验证

[grid@db1:/home/grid]$ opatch lspatches
32918050;TOMCAT RELEASE UPDATE 19.0.0.0.0 (32918050)
32916816;OCW RELEASE UPDATE 19.12.0.0.0 (32916816)
32915586;ACFS RELEASE UPDATE 19.12.0.0.0 (32915586)
32904851;Database Release Update : 19.12.0.0.210720 (32904851)
32585572;DBWLM RELEASE UPDATE 19.0.0.0.0 (32585572)
OPatch succeeded.[grid@db2:/home/grid]$ opatch lspatches
32918050;TOMCAT RELEASE UPDATE 19.0.0.0.0 (32918050)
32916816;OCW RELEASE UPDATE 19.12.0.0.0 (32916816)
32915586;ACFS RELEASE UPDATE 19.12.0.0.0 (32915586)
32904851;Database Release Update : 19.12.0.0.210720 (32904851)
32585572;DBWLM RELEASE UPDATE 19.0.0.0.0 (32585572)
OPatch succeeded.[oracle@db1:/home/oracle]$ opatch lspatches
32876380;OJVM RELEASE UPDATE: 19.12.0.0.210720 (32876380)
32916816;OCW RELEASE UPDATE 19.12.0.0.0 (32916816)
32904851;Database Release Update : 19.12.0.0.210720 (32904851)
OPatch succeeded.[oracle@db2:/home/oracle]$ opatch lspatches
32876380;OJVM RELEASE UPDATE: 19.12.0.0.210720 (32876380)
32916816;OCW RELEASE UPDATE 19.12.0.0.0 (32916816)
32904851;Database Release Update : 19.12.0.0.210720 (32904851)
OPatch succeeded.



写在最后

看完文章,你现在应该知道在节点2应用DB补丁时为了避免踩坑,提前修改好oui-patch.xml文件的权限,可以让你更加顺利的完整整个RU补丁更新过程


推荐阅读
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
author-avatar
天高云淡-tgyd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有