opatchauto 在 oracle 19c rac 中不支持 ru 补丁滚动升级,仅适用于 psu、bp 或 gi-only 补丁;ru 补丁必须通过 opatch apply 加 datapatch 手动逐节点执行并验证 registry$sqlpatch 状态。

opatchauto 在 Oracle 19c RAC 中不能用于 RU 补丁的滚动升级——这是硬性限制,不是操作错误。 它只适用于 PSU、BP 或 GI-only 补丁,且必须严格匹配补丁类型、OPatch 版本和文档声明的支持范围。
OPATCHAUTO-72033 错误的本质原因
当你对 RU 补丁(如 p34130714_190000_linux-x86-64)执行 opatchauto apply 时,报出 OPATCHAUTO-72033: This patch is not applicable for auto patching,根本原因不是权限、路径或 OCM 配置问题,而是 Oracle 从 19c 起已彻底移除 RU 补丁的 opatchauto 支持逻辑。
- RU 补丁含字典变更、PDB-aware SQL 脚本、跨实例一致性校验,
opatchauto无法触发datapatch,也无法协调所有节点统一重启时机 - 看到 Metalink 文档写 “opatchauto supported”,要核对适用版本——12.2/18c 的文档不适用于 19c RU
- 成功用
opatchauto打了 GI 补丁,不等于 DB 的 RU 补丁也能套用同一命令 - 解压 RU 补丁后直接传给
opatchauto apply,但没检查 README 中 “Applicable to” 字段,大概率踩坑
哪些补丁还能用 opatchauto 滚动打
仅限以下两类,且必须同时满足全部条件:
- PSU 或 BP 类型补丁(非 RU/RUR),例如
p31305209_112040_Linux-x86-64(注意:这是 11g 示例,逻辑一致) - 补丁 README 明确声明支持
opatchauto且标注 “RAC Rolling” - 每个节点上,
grid和oracle用户各自的$ORACLE_HOME/OPatch均升级到补丁要求的最低版本(如 12.2.0.1.39) - 提前生成 OCM 响应文件:
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -output /tmp/ocm.rsp,后续命令必须带-ocmrf /tmp/ocm.rsp - 典型可用命令(以 GI 补丁为例):
/u01/app/19.0.0/grid/OPatch/opatchauto apply /soft/p34130714 -oh /u01/app/19.0.0/grid -nonrolling -ocmrf /tmp/ocm.rsp;注意-nonrolling不代表“不滚动”,而是告诉工具本次只处理当前节点(滚动的第一步),缺它会导致跨节点并发失败
RU 补丁在 19c RAC 中的正确操作路径
RU 必须通过 opatch apply 加 datapatch 手动分步执行,RAC 需逐节点操作,并严格验证 registry$sqlpatch 状态:
- 先停一个节点的数据库实例和 CRS(
crsctl stop crs),再对该节点的$ORACLE_HOME执行opatch apply - 重启该节点 CRS 和数据库,运行
datapatch -verbose应用 SQL 变更 - 确认
SELECT * FROM registry$sqlpatch中该补丁状态为APPLIED,且STATUS列无 ERROR - 重复上述步骤至所有节点完成,严禁跳过任一节点的
datapatch步骤 - 整个过程不依赖
opatchauto,也不允许使用-rolling参数
最容易被忽略的是:即使 opatch apply 成功返回,若漏掉 datapatch 或某节点未执行,registry$sqlpatch 就会出现不一致状态,后续升级或备份可能静默失败。务必逐节点验证 SQL 层补丁状态,而不是只看 OPatch 输出。











