如何确定一次性补丁是否冲突? (文档 ID 2179481.1)

适用于:

Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 11.2.0.3 [发行版 10.2 到 11.2]
本文档所含信息适用于所有平台

目标

你想要在一个已经安装有其它一次性补丁的 Oracle Home 里面,再安装 ‘n’ 个一次性补丁,你想要知道已经安装的这些补丁与即将安装的这些补丁是否冲突。

解决方案

不实际执行安装时,很难预测补丁是否会冲突,但是我们可以使用 OPatch 工具来执行检查,而不需要真正的将补丁安装到 Oracle Home。

要检查需要安装的补丁之间是否有冲突,以及/或者检查要安装的补丁与已经安装的补丁之间是否有冲突,你可以在 OPatch 中使用如下查询。

确保按照文档 Note 224346.1 安装了最新的 OPatch 版本。

在确认你使用了最新的 OPatch 版本之后,下载计划安装的所有的补丁,并且解压到同一个目录,例如,将所有需要安装的补丁解压到 $ORACLE_HOME/patches 目录。

运行如下命令来检查是否在计划安装的补丁之间有冲突。

这条命令会给出冲突和超集的详细信息,从而检查计划安装的补丁之间是否有冲突。

$ opatch prereq CheckConflictAmongPatchesWithDetail -phBaseDir <要安装的所有补丁所在的路径>


例如如下命令

$ opatch prereq CheckConflictAmongPatchesWithDetail -phBaseDir $ORACLE_HOME/patches


运行如下命令检查计划安装的补丁与在这个 Oracle Home 中已经安装的补丁之间是否有冲突

$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <要安装的所有补丁所在的路径>


这条命令会给出冲突和超集的详细信息,从而检查计划安装的补丁与 Oracle Home 中已有的补丁是否冲突。

注意:"opatch prereq" 命令中无法使用 -skip_duplicate 和 -skip_subset 选项,"opatch prereq"会自动地将所有子集和重复显示为"superset",这样就可以忽略它们,而只有 prereq 输出中显示为"conflict"的需要注意。

已知问题

问题1:

INFO:Unable to create Patch Object.
Exception occured : PatchObject constructor: Input file "/dba/downloads/patch_candidates/6646853/etc/config/actions" or "/dba/downloads/patch_candidates/6646853/etc/config/inventory" does not exist.

当对 10.2.0.3 及以上版本的 CPU 补丁运行 opatch checkconflict 命令时,要从补丁目录中移除 README.html 和 patchmd.xml 文件。(要从 phBaseDir 目录中移除任何其他的单个文件,例如cpu_root.sh),然后再执行命令,否则你会遇到上述错误。

问题2:

当使用'opatch prereq'检查潜在的冲突时,可能会遇到如下错误

Exception occured : PatchObject constructor: Input file "/refresh/32bit/app/oracle/product/10.2.0.3/patches/6081547/etc/config/actions" or "/refresh/32bit/app/oracle/product/10.2.0.3/patches/6081547/etc/config/inventory" does not exist.

请参照如下 MOS 文档去解决:

Note 788181.1 - opatch prereq CheckConflict fails with Exception occured : PatchObject constructor:Input file does not exist

参考

NOTE:242993.1 - OPATCH FAQ
NOTE:788181.1 - opatch prereq CheckConflict fails with Exception occured : PatchObject constructor:Input file does not exist
NOTE:224346.1 - OPatch - Where Can I Find the Latest Version of OPatch(6880880)? [Video]
请使用浏览器的分享功能分享到微信等