数据库补丁冲突解决方案 (文档 ID 1674432.1)

适用于:

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。

验证是否冲突的补丁是一个覆盖补丁
    1. 运行如下
       
      % opatch lsinv
       
    2. 查看库存清单来确定冲突的补丁是否是一个覆盖补丁。例如:

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 12646784

CheckConflictAgainstOHWithDetail 显示:

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 冲突

  1. 运行如下命令来确定是否安装了 PSU

    % $ORACLE_HOME/OPatch/opatch lsinventory
     
  2. 阅读输出,查看是否安装了任何版本的 PSU

根据当前的 Patch Set Update and Critical Patch Update Availability Document。在已经安装了 PSU 的环境继续安装 CPU 是不支持的。如果安装了 PSU,您必须执行如下之一:

  1. 安装当前的 PSU 而不是 CPU。
     
  2. 回滚 PSU,安装 CPU。并不推荐这个方案,因为回滚 PSU 的时候,您会移除很多已经安装在 ORACLE_HOME 下修复内容。

CPU 与一个非 PSU 或非安全补丁的的冲突

  1. 转向提交一个服务请求并且提供如下信息

所有其他的冲突

提交一个服务请求并且提供如下信息

  1. 确认您有最新版本的 OPatch。如果您没有最新的版本,那么参照 My Oracle Support 中列出的如下步骤
     
    Document 224346.1 OPatch - Where Can I Find the Latest Version of OPatch?

  2. 运行如下命令:

    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
     
  3. 上传显示了冲突的 OPatch 日志

  4. 将如下结果发到 SR

    UNIX:
    % uname -a
    % file $ORACLE_HOME/bin/sqlplus

 

 

参考

NOTE:563656.1 - Different types of Patch Conflicts - Superset/Subset/Duplicate/Bug/File
NOTE: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
请使用浏览器的分享功能分享到微信等