When patches are applied to Oracle Products, patch utility checks/updates Oracle Inventory. If pre-requisites (e.g particular version of product) information is not present in Inventory, patching process will fail.
Oracle Inventory may not be up to date for many reasons. One of the primary reason is presence of multiple oraInventories and oraInst.loc files. This situation would have happened with multiple people installing different products with different oraInventories.
In our case, we had an environment with SOA and OSB. It’s been running for many years. We upgraded the version from 126.96.36.199 to 188.8.131.52. While trying to apply bundle patches for SOA(184.108.40.206.8) and OSB (220.127.116.11.4) , OPatch process for OSB failed with error “Required version 18.104.22.168.0 not present”.
OSB Upgrade from 22.214.171.124 to 126.96.36.199 was successful. However, OraInventory used by us was not updated with that information. The reason was, there was a local oraInst.loc file present in OSB Home directory which was pointing to different oraInventory.
“runInstaller” command seems to have -ignoreSysPrereqs option which ignores pre-requisites. However, we were not able to find that option with OPatch utility. Further, we wanted separate inventories to be consolidated rather than ignoring pre-requisites.
We are able to consolidate the inventory by attaching OSB Home to the inventory used by us. Following is the command for attaching oracle home to oraInventory.
./runInstaller -silent -attachHome ORACLE_HOME="<Oracle_Home_Location>" ORACLE_HOME_NAME="<Oracle_Home_Name>“ e.g ./runInstaller -silent -attachHome ORACLE_HOME="/u01/domain/soadomain/osb" ORACLE_HOME_NAME="osbhome“
Above command needs to be run using <oracle_home>/oui/bin/runInstaller (not from the installation package).
Once our central inventory was updated with OSB Home information, patching process went through fine.
Reference: Doc 438133.1