适用于:
oracle服务器 - 企业版 - 版本:10.1.0.2到10.2.0.3
本文档中的信息适用于任何平台。
症状
正试图更新库存时,补丁应用失败。获得类似的错误如下
Updating inventory...
Verifying patch...
Verifying that patch ID is in Oracle Home inventory.
INVENTORY PROBLEM: Patch 4518443 is not present in Oracle Home inventory.
Verifying copy files.
Comparing "/home/oradb/op/OPatch/4518443/files/lib/libons.so" and "/oraerp/app/product/10.1.0/db_1/lib/libons.so"
Comparing "/home/oradb/op/OPatch/4518443/files/opmn/lib/libons.so" and "/oraerp/app/product/10.1.0/db_1/opmn/lib/libons.so"
OPATCH_JAVA_ERROR: Patch was not successfully applied.
Verification of the patch failed.
ERROR: OPatch failed as verification of the patch failed.
$ exit
如果opatch运行时OPATCH_DEBUG= TRUE,日志文件就会出现类似下面给出的文字
Comparing "/home/oradb/op/OPatch/4518443/files/lib/libons.so" and "/oraerp/app/product/10.1.0/db_1/lib/libons.so"
CheckSum of 2 streams are 463007112 and 463007112
Comparing "/home/oraerp/op/OPatch/4518443/files/opmn/lib/libons.so" and "/oraerp/app/product/10.1.0/db_1/opmn/lib/libons.so"
CheckSum of 2 streams are 463007112 and 463007112
OPATCH_JAVA_ERROR: Patch was not successfully applied.
原因:
这个问题是由库存中的一些问题造成的。
这时候,补丁已成功应用。带有调试选项的opatch应用输出,清楚地表明,补丁文件的校验和是正确的。但仍然失败,这明确表示库存有一些问题。
如果“opatch lsinventory -detail”给出了正确的输出,这意味着,在中央存储中文本格式的存储在中央库存库存是好的,但二进制库存不同步。
如果上述命令报错,那么库存已损坏。
解决方案
如果只有二进制库存已损坏,通过以下重建二进制库存。
情况1。只有二进制库存损坏。
1.在中央目录重命名该目录的内容。
(中央目录的位置将在oraInst.loc文件中。这个文件的默认位置是/etc in AIX and Linux.。在Solaris和HP-UX系统中在/ opt/ oracle目录下。在Windows,可以从注册表项HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\inst_loc中找出)
$ mv Contents Contents_bak
2。运行补丁程序
$ opatch apply
这将重建二进制库存,并且补丁程序将会成功。
情况2。库存损坏
在这种情况下,Oracle不得不重新安装。
如果当地的库存是完整的数据库版本是10.1及以上,可以尝试重装中央库存,。在早期版本中,这种方法不可行。使用OUI可以完成。
$ ./runInstaller -attachHome ORACLE_HOME="" ORACLE_HOME_NAME=""