如何在不中断业务的情况下给Oracle19c RAC打RU补丁

风枫小哥_5599

风枫小哥_5599

2026-09-01

926人浏览

原创

oracle 19c rac下唯一不中断业务的ru升级方式是opatchauto rolling模式,它通过逐节点迁移集群资源实现滚动补丁,需满足opatch版本、共享存储、集群健康及补丁标注等前提,并严格完成版本校验、comps.xml检查和空间预留三步,执行时须用root用户、指定grid_home、加-analyze参数,补丁后必须人工运行datapatch并验证版本、对象状态和业务链路。

如何在不中断业务的情况下给oracle19c rac打ru补丁

opatchauto rolling 是唯一可行路径

Oracle 19c RAC 环境下,真正能实现“不中断业务”的 RU 补丁应用方式只有 opatchauto 的 rolling 模式。它不是靠“不停库”蒙混过关,而是依赖集群资源的逐节点迁移:自动将实例、监听、ASM 实例等关键资源从待补丁节点迁出,执行补丁后重新拉起,再切回服务。任何试图用 opatch apply + 手动启停的方式都必然导致全局服务中断。

必须满足的前提条件包括:

  • opatchauto 要求 GI 和 DB 的 $ORACLE_HOME 下 OPatch 版本 ≥ 12.2.0.1.43(例如 RU 19.24/19.25 明确要求)
  • 所有节点的 GI HOME 和 DB HOME 必须使用共享存储(或至少是同步镜像),否则 opatchauto 会拒绝 rolling 模式
  • 集群必须处于健康状态:crsctl check cluster -all 全部通过,且 olsnodes -s -t 显示所有节点为 Active
  • 补丁包本身需标注 “rolling RAC installable” —— 查看 README 中的 Installation Type 字段,不能是 Non-rolling 或留空

滚动升级前必须做三件事

跳过这三步,opatchauto 很可能在第二节点失败,或补丁后出现 ORA-00600/ORA-00704 等字典级错误。

第一,确认当前 GI 和 DB 的 RU 版本可线性升级。19c RU 升级不是任意跳转,必须满足 c >= a 且 c + d >= a + b(如 19.15.0 → 19.24.0 合法,但 19.10.2 → 19.24.0 不合法)。执行 opatch lsinventory -detail -oh $GRID_HOME 和 opatch lsinventory -detail -oh $ORACLE_HOME 获取当前版本号。

第二,检查 $ORACLE_HOME/inventory/ContentsXML/comps.xml 文件完整性。该文件若被手动修改或残留旧补丁注册信息,opatchauto 不报错但后续 datapatch 会静默跳过组件更新。可用 cat comps.xml | grep -E "(COMP_NAME|VERSION)" | head -10 快速核对主组件版本是否与 opatch lsinventory 输出一致。

第三,预留足够空间。RU 补丁解压后常达 2–3 GB,opatchauto 还需临时空间存放备份归档(如 $GRID_HOME/.patch_storage)。建议 /u01 或 $ORACLE_BASE 所在文件系统剩余 ≥ 25 GB。

Crypto Sniper Oracle
Crypto Sniper Oracle

机构级量化市场预言机,提供订单簿失衡(OBI)、VWAP分析、自动化报告及Telegram预警。

下载

执行 opatchauto apply 时的关键参数和陷阱

opatchauto apply 命令本身简单,但参数错一个,就退化成全停机模式。

正确命令格式(以 root 用户在节点 1 执行):

cd /u01/media/ru/36912597
/u01/app/19.24.0/grid/OPatch/opatchauto apply -oh /u01/app/19.24.0/grid -analyze

注意:

  • 必须用 root 用户执行,且 -oh 指向的是 $GRID_HOME(不是 $ORACLE_HOME),opatchauto 会自动识别并同时处理 GI 和 DB HOME
  • 首次运行务必加 -analyze 参数。它会模拟整个流程,输出详细检查项(如空间、冲突、依赖),但不实际改动任何文件。忽略此步等于闭眼开车
  • 不要加 -nonrolling —— 即使你只打一个节点,加了这个参数也会强制停掉整个集群
  • 如果遇到 “PRCR-1079: Failed to start resource ora.crsd” 类错误,大概率是 $GRID_HOME/bin/crsctl 权限异常,执行 chmod 6751 $GRID_HOME/bin/crsctl 后重试

补丁后验证不能只看 opatch succeeded

opatchauto 最后输出 OPatchauto succeeded. 只代表补丁文件已复制、GI 重启成功,不代表数据库字典已升级、业务可正常访问。

必须依次验证:

  • 登录每个节点数据库,执行 SELECT BANNER_FULL FROM V$VERSION;,确认显示为新 RU 版本(如 Oracle Database 19c Enterprise Edition Release 19.24.0.0.0)
  • 执行 datapatch -verbose(用 oracle 用户,在任一节点运行),观察输出中是否包含 Applied Patches 且无 ERROR 行;若提示 “No patches to apply”,说明 opatchauto 未触发字典升级,需手动运行 $ORACLE_HOME/OPatch/datapatch -verbose
  • 检查无效对象:SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS != 'VALID';,数值应与打补丁前一致(或仅增加极个别系统包,属正常)
  • 跑一次最小业务链路:连入应用用户、查一张核心表、执行一条带绑定变量的 SELECT,确认硬解析、软解析、游标共享均无异常

最容易被忽略的是 datapatch 执行时机 —— 它不会在 opatchauto 中自动完成,必须人工触发,且必须在所有节点数据库都 open 状态下运行一次即可。漏掉这步,新特性(如 Automatic Indexing 增强)和 CVE 修复(如 CVE-2024-20358)都不会生效。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

881

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2493

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2530

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1449

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

2053

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2689

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4269

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

686

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程