暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

如何确定一次性补丁是否冲突

原创 xiangjingtao 2021-01-08
1374

目标
你想要在一个已经安装有其它一次性补丁的 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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论