适用于:
Oracle Database - Enterprise Edition - 版本 9.2.0.1 到 11.2.0.3 [发行版 9.2 到 11.2]本文档所含信息适用于所有平台
目标
这篇文档的目标是协助客户找到解决补丁冲突的方案,如果没有解决方案,为 Oracle Support 提供解决冲突所需的信息。
提问,获得帮助,并分享您对于这篇文档的经验。
您是否希望与其他 Oracle 客户、Oracle 员工和业内专家进一步探讨此主题?
请点击这里进入Oracle 社区(中文)。
请点击这里进入My Oracle Support 社区的数据库安装/升级(英文)主页发现更多的话题和讨论。
解决方案
较简单的方式:使用 My Oracle Support 来找到冲突的解决方案
My Oracle Support Conflict Checker
一个新的检查Patch冲突的工具已经在 Patch Search 的结果页可用。. 通过这个工具我们可以上传OPatch inventory并且检查要下载的patch和已经打了的patch是否冲突。
如果没有发现冲突,那么可以下载 Patch。 如果发现冲突,这个工具可以寻找解决方案。 如果没有发现解决方案,你可以申请一个解决方案(注:申请patch或者merge patch),并且可以监控这个过程。
关于更多信息和一个示例视频,请参照
Document 1091294.1 "How to use the My Oracle Support Conflict Checker Tool".
OCM Configurations
如果您的安装的当前配置信息上传到了 My Oracle Support,您可以利用 补丁计划(Patch Plans) 来验证和解决冲突。如果对这个冲突没有既存的解决方案,它同样会给您提供一个链接,来请求一个解决方案,这甚至不需要创建一个服务请求。
有关 Patch Plans 的视频,请参阅如下:
Document 603505.1 My Oracle Support Speed Training - Links to Recorded Training
Support Tools and Processes 标签
- Why use Configuration Manager in MOS
- Configuration Manager
- Installing the Collector
- MOS Configuration Manager
- Patch Recommendations and Patch Plans
稍微复杂:Patch Set Update (PSU)
验证是否安装了 PSU
如果不知道是否已经安装了一个 PSU,请参阅如下文档中的验证步骤:
Document 861152.1 Do Patchset Updates (PSU's) Change the Oracle Release Version/Fifth Digit?
验证是否真的是一个冲突
定义:覆盖补丁
当一个补丁与 PSU 冲突,一个覆盖补丁会被创建在相同的 PSU 版本上。例如,PSU 是 11.1.0.7.8,覆盖补丁将会是 11.1.0.7.8。覆盖补丁将会在 PSU 之后被安装,并且使用冲突的 PSU 和原始补丁的一个融合版本来“覆盖”PSU。
-
运行如下
% opatch lsinv
- 查看库存清单来确定冲突的补丁是否是一个覆盖补丁。例如:
Patch 11840910 : applied on Fri Oct 12 11:22:09 EDT 2012
Unique Patch ID: 14478518
Created on 13 Jan 2012, 05:48:59 hrs PST8PDT
Bugs fixed:
11840910
This patch overlays patches:
13343438
This patch needs patches:
13343438
as prerequisites
验证是否可以使用如下文档来确认基版本(例如,11.1.0.7.0)无法安装
Document 1357613.1 Can a patch be applied if it is available on base/release version, even though PSU/CPU is installed
此 PSU 是否是一个复合补丁
一个新的打包模式在2012年4月被引入到了某些 PSU 版本。它叫做复合补丁模式。如果您不熟悉复合补丁模式,请阅读如下文档:
Document 1376691.1 Composite Patches for Oracle Products
第一步是确定您的冲突所关联的 PSU 是否以复合补丁模式建立。
确定此 PSU 是否被打包为一个复合补丁参考如下文档中的第二节的表,此表包含了哪些发行版是复合补丁。
Document 1376691.1 Composite Patches for Oracle Products [Video]
非复合补丁
在 My Oracle Support 的“补丁和更新程序”标签下查找您的冲突的解决方案:找可用的替代补丁在 Patch ID 中输入补丁号码,搜索符合您的配置的平台。如果有与您的PSU版本相同的补丁存在(比如 11.1.0.7.8),那么(在安装 PSU 之后)下载安装那个补丁来解决冲突。
阅读如下文档寻找可能的替代补丁
Document 1061295.1 Patch Set Updates - One-off Patch Conflict Resolution
如果没有解决方案,转向 通过一个服务请求提供如下信息
复合补丁
当安装 PSU 时 OPatch 的输出示例
- 在安装 PSU 之前检查冲突
% opatch prereq CheckConflictAgainstOHWithDetail -ph ./13343438
Following patches have conflicts. Please contact Oracle Support and get the merged patch of the patches :
12646784, 13696216, 11840910
Following patches will be rolled back from Oracle Home on application of the patches in the given list :
12646784, 11840910
Conflicts/Supersets for each patch are:
Patch : 13696216
Conflict with 12646784
Conflict details:
/bugmnt6/ap/celclnx17/BOD/11.2.0.3/A/64bit/app/oracle/product/11.2.0.3.0/lib/libserver11.a:/atb.o
Conflict with 11840910
Conflict details:
/bugmnt6/ap/celclnx17/BOD/11.2.0.3/A/64bit/app/oracle/product/11.2.0.3.0/lib/libserver11.a:/kta.o
- 安装 PSU
% opatch apply
Composite Patch 13696216 conflicts with installed patch(es) 12646784, 11840910
Conflict Description:
Here are the specific sub-patches of composite patch 13696216 that conflict with 12646784, 11840910
Sub-Patch 13343438 conflicts with 11840910
Sub-Patch 13696216 conflicts with 12646784
Conflict Remedy:
Refer to My Oracle Support Note 1299688.1 for instructions on resolving patch conflicts.注意,apply 的输出与 CheckConflictAgainstOHWithDetail 的输出并不相同。
apply 显示:
Sub-Patch 13343438 conflicts with 11840910
Sub-Patch 13696216 conflicts with 12646784CheckConflictAgainstOHWithDetail 显示:
11840910 and 12646784 both conflict with 13696216这是一个已知的问题,会在未来的 OPatch 版本中解决。正确的信息是 Apply 的输出。
所以在进行之前,您需要利用如下文档的场景1来确定哪个子补丁关联于这个冲突:
Document 1626610.1 "opatch prereq CheckConflictAgainstOHWithDetail -ph ./" does not show correct Composite sub-patch
- 当 PSU 与多个子补丁冲突时安装 PSU
Composite Patch 13923374 conflicts with installed patch(es) 13632140
Conflict Description:
Here are the specific sub-patches of composite patch 13923374 that conflict with 13632140
Sub-Patch 13343438 conflicts with 13632140
Sub-Patch 13696216 conflicts with 13632140
Sub-Patch 13923374 conflicts with 13632140在这个例子中 PSU 与多个子补丁冲突,那么在冲突解决的处理过程中,使用最新的子补丁(最大的补丁号码)。在上面的例子中,使用 13923374。
当安装一个小补丁时 OPatch 的输出示例
- 在安装小补丁前检查与 PSU 的冲突
Following patches have conflicts. Please contact Oracle Support and get the merged patch of the patches :
13343438, 11840910
Following patches will be rolled back from Oracle Home on application of the patches in the given list :
13343438
Conflicts/Supersets for each patch are:
Patch : 11840910
Conflict with 13343438
Conflict details:
/bugmnt6/ap/celclnx17/BOD/11.2.0.3/A/64bit/app/oracle/product/11.2.0.3.0/lib/libserver11.a:/kta.o
- 安装一个与 PSU 冲突的补丁
Patch 11840910 conflicts with the composite patch 13696216 (specifically, sub-patch(es) 13343438). Please refer to the following to resolve the conflict(s): Patch conflict resolution (Doc ID 1299688.1)
or
Patch 12646784 conflicts with the composite patch 13696216 (specifically, sub-patch(es) 13696216). Please refer to the following to resolve the conflict(s): Patch conflict resolution (Doc ID 1299688.1)
- 安装一个小补丁,此小补丁与 PSU 的多个子补丁冲突
Patch 13632140 conflicts with the composite patch 13923374 (specifically, sub-patch(es) 13923374,13696216,13343438).
在小补丁与多个子补丁冲突的情况下,在冲突处理过程中使用最新的子补丁(最大的补丁号码)。比如在上面的例子中,使用 13923374。
确定冲突所关联的复合子补丁的版本在如下文档中查找复合子补丁号码
Document 753736.1 Quick Reference to Patchset Patch Numbers
在 My Oracle Support 的“补丁和更新程序”标签下查找您的冲突的解决方案:在“搜索”标签下,在补丁编号里输入非 PSU 补丁号码(11840910),并且搜索匹配您的配置的平台。如果存在一个补丁,能够匹配冲突中所报告的 PSU 子补丁版本(例如,11.2.0.3.1),那么,要解决冲突,在安装 PSU 之后下载并安装这个补丁。查找可用的替代补丁查看如下文档找到可能的替代补丁
Document 1061295.1 Patch Set Updates - One-off Patch Conflict Resolution
如果没有解决方案,转向 通过一个服务请求提供如下信息
稍微复杂:Critical Patch Update (CPU)
CPU 与一个已经安装的 PSU 冲突
-
运行如下命令来确定是否安装了 PSU
% $ORACLE_HOME/OPatch/opatch lsinventory
- 阅读输出,查看是否安装了任何版本的 PSU
根据当前的 Patch Set Update and Critical Patch Update Availability Document。在已经安装了 PSU 的环境继续安装 CPU 是不支持的。如果安装了 PSU,您必须执行如下之一:
-
安装当前的 PSU 而不是 CPU。
- 回滚 PSU,安装 CPU。并不推荐这个方案,因为回滚 PSU 的时候,您会移除很多已经安装在 ORACLE_HOME 下修复内容。
CPU 与一个非 PSU 或非安全补丁的的冲突
所有其他的冲突
提交一个服务请求并且提供如下信息
-
确认您有最新版本的 OPatch。如果您没有最新的版本,那么参照 My Oracle Support 中列出的如下步骤
Document 224346.1 OPatch - Where Can I Find the Latest Version of OPatch? -
运行如下命令:
UNIX:
% $ORACLE_HOME/OPatch/opatch lsinventory
Windows:
%ORACLE_HOME%\OPatch\opatch lsinventory
- 上传当前的日志文件,位置是
UNIX:
$ORACLE_HOME/cfgtoollogs/opatch (不是 opatch_history.txt 文件)
Windows:
%ORACLE_HOME%\cfgtoollogs\opatch
-
上传显示了冲突的 OPatch 日志
-
将如下结果发到 SR
UNIX:
% uname -a
% file $ORACLE_HOME/bin/sqlplus
参考
NOTE:563656.1 - Different types of Patch Conflicts - Superset/Subset/Duplicate/Bug/FileNOTE:861152.1 - Do Patchset Updates (PSU's) Change the Oracle Release Version/Fifth Digit?
NOTE:1626610.1 - "opatch prereq CheckConflictAgainstOHWithDetail -ph ./" shows incorrect results for Composite Patch