最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何修复Oracle 19c补丁冲突问题_使用opatch apply命令结合冲突解决
时间:2026-07-16 19:00:01 编辑:袖梨 来源:一聚教程网
OPatch报Conflict detected是因新旧补丁在修复bug、修改文件或逻辑上存在重叠或互斥,并非单纯补丁装错;需先验证OPatch版本、inventory一致性及执行用户正确性,再用opatch prereq定位具体冲突补丁与文件。
opatch apply 报 Conflict detected 是什么情况
这不是“补丁装错了”,而是 opatch 在告诉你:当前 oracle home 里已有的某个补丁,和你要装的新补丁,在修复的 bug 上存在重叠或覆盖关系。比如旧补丁修了 bug 1、2、3,新补丁也修了 1、2、3,还多修了一个 4——opatch 默认会把它识别为 superset,并自动移除旧补丁、只留新补丁。但如果你看到报错,大概率是触发了更严格的冲突类型,比如两个补丁互相修改同一文件、或修复逻辑互斥。
检查冲突前必须确认的三件事
很多冲突误报其实源于基础环境没对齐:
-
opatch version必须 ≥ 目标补丁 Readme 要求的最低版本(例如补丁33515361要求12.2.0.1.28);低于就别跑冲突检查,直接升级OPatch -
$ORACLE_HOME/orainst.loc和$ORACLE_INVENTORY/ContentsXML/inventory.xml中的responsefileversion必须是19.0.0.0.0;若仍是12.2.0.1.0,说明是从旧版本克隆而来,需用runInstaller -ignoreSysPrereqs -force -silent -attachHome重新注册 Oracle Home - 确保你用的是正确的用户执行:
oracle用户跑数据库补丁,grid用户跑 GI 补丁,root用户只在opatchauto阶段介入;混用会导致 inventory 权限混乱,引发假冲突
用 opatch prereq 手动验证冲突细节
别跳过这步——opatch apply 的冲突提示太笼统,真正要定位问题得靠预检命令:
进入解压后的补丁目录(如 33515361),运行:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
输出里重点关注:
-
Conflicting patches列出的补丁编号(如32540712),去查它的内容是否真与你当前业务强相关 -
Files with conflicts显示具体冲突文件路径(如$ORACLE_HOME/rdbms/admin/catcon.pl),确认该文件近期是否被手动修改过 -
Superset patch提示说明当前补丁是否包含已有补丁全部修复项;如果是,且你接受覆盖,可加-no_bug_superset参数强制报错(用于测试场景),或干脆不加——默认行为就是自动处理 superset
真实冲突的两种处理路径
确认是真冲突后,不能硬上 opatch apply -force:
- 如果冲突补丁是你自己打的、且无生产依赖,先用
opatch rollback -id <patch_id>回退它,再重试新补丁 - 如果冲突补丁来自 Oracle 官方 RU/PSU(比如
34130714),说明你漏打了中间版本;此时应放弃单独打这个补丁,改用完整 RU 流程:opatchauto apply <RU_path>,让工具自动拉取并协调所有依赖补丁 - 极少数情况(如定制化环境),需要保留两个补丁共存,就得联系 Oracle 支持申请合并补丁(Merged Patch),自行修改补丁包风险极高,不建议操作
最常被忽略的一点:RAC 环境下,opatch lsinventory -detail -oh $ORACLE_HOME 必须在每个节点分别执行并比对结果——节点间 inventory 不一致,会直接导致一个节点检测“无冲突”,另一个报“严重冲突”。
相关文章
- 异环怎么主动投案自首 07-16
- duyin抖音官网首页网页版官方入口-duyin抖音官网首页网页版官方地址 07-16
- 漫蛙manwa2(台版)-入口 07-16
- 《洛克王国世界》迪莫PVP配队攻略-迪莫技能与进化形态详解 07-16
- 从iPhone 4暴涨80倍说开去 为何我们更爱老手机拍的老照片 07-16
- 网上如何查火车票余票-网上买火车票推荐软件 07-16