Recently when patching one of the instances in a RAC environment, received below error during
$opatch lsinventory
OracleHomeInventory::createInventoryObj() construction done
LsInventory::loadAndPrintInventory()
Retrieving inventory from Oracle Home...
OracleHomeInventory::load()
Inventory load failed... OPatch cannot load inventory for the given Oracle Home.
Possible causes are:
Oracle Home dir. path does not exist in Central Inventory
Oracle Home is a symbolic link
Oracle Home inventory is corrupted
Locker::release()
OUISessionManager::unRegister()
Un-Registering the caller : OPatch
LsInventory::getInstance() returns
LsInventorySession failed: OracleHomeInventory gets null oracleHomeInfo
Cleaning up the directory : "/u01/app/oracle/DEV/db/tech_st/11.2.0.2/.patch_storage/patch_unzip"...
OPatch failed with error code 73
Initially compared ContentsXML on other 2 nodes of the RAC and couldn't find much of differences...
Here the issue was that the opatch was checking on the ORACLE_HOME as below
[oracle@ora-rac01 ]$ opatch lsinventory
Invoking OPatch 11.2.0.1.1
Oracle Interim Patch Installer version 11.2.0.1.1
Copyright (c) 2009, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/DEV/db/tech_st/11.2.0.2
Central Inventory : /u01/app/oraInventory
from : /etc/oraInst.loc
OPatch version : 11.2.0.1.1
OUI version : 11.2.0.2.0
These commands would provide details about the issue.
$ORACLE_HOME/OPatch/opatch lsinventory -all
$ORACLE_HOME/OPatch/opatch lsinventory -detail
export OPATCH_DEBUG=TRUE
$ORACLE_HOME/OPatch/opatch lsinventory > error_details.lst
ORACLE_HOME that was referenced by the opatch did not exist in ContentsXML file, So we need to attach this ORACLE_HOME to inventory for the opatch to succeed, using the below command..
Note : Before proceeding, please make a back up of your central inventory, location can be picked from /etc/oraInst.loc
from $ORACLE_HOME/oui/bin
./runInstaller -silent -local -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/oracle/DEV/db/tech_st/11.2.0.2" ORACLE_HOME_NAME="DEV1_DB__u01_app_oracle_DEV1_db_tech_st_11_2_0_2" CLUSTER_NODES=ora-rac01,ora-rac02,ora-rac03 LOCAL_NODE=ora-rac01
this should attach the ORACLE_HOME to the local node and opatch lsinventory run would be successful.
Note : This is purely to share the experience and anticipating this article would help some one in similar situations. Please be cautious when working on your environments.
$opatch lsinventory
OracleHomeInventory::createInventoryObj() construction done
LsInventory::loadAndPrintInventory()
Retrieving inventory from Oracle Home...
OracleHomeInventory::load()
Inventory load failed... OPatch cannot load inventory for the given Oracle Home.
Possible causes are:
Oracle Home dir. path does not exist in Central Inventory
Oracle Home is a symbolic link
Oracle Home inventory is corrupted
Locker::release()
OUISessionManager::unRegister()
Un-Registering the caller : OPatch
LsInventory::getInstance() returns
LsInventorySession failed: OracleHomeInventory gets null oracleHomeInfo
Cleaning up the directory : "/u01/app/oracle/DEV/db/tech_st/11.2.0.2/.patch_storage/patch_unzip"...
OPatch failed with error code 73
Initially compared ContentsXML on other 2 nodes of the RAC and couldn't find much of differences...
Here the issue was that the opatch was checking on the ORACLE_HOME as below
[oracle@ora-rac01 ]$ opatch lsinventory
Invoking OPatch 11.2.0.1.1
Oracle Interim Patch Installer version 11.2.0.1.1
Copyright (c) 2009, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/DEV/db/tech_st/11.2.0.2
Central Inventory : /u01/app/oraInventory
from : /etc/oraInst.loc
OPatch version : 11.2.0.1.1
OUI version : 11.2.0.2.0
These commands would provide details about the issue.
$ORACLE_HOME/OPatch/opatch lsinventory -all
$ORACLE_HOME/OPatch/opatch lsinventory -detail
export OPATCH_DEBUG=TRUE
$ORACLE_HOME/OPatch/opatch lsinventory > error_details.lst
ORACLE_HOME that was referenced by the opatch did not exist in ContentsXML file, So we need to attach this ORACLE_HOME to inventory for the opatch to succeed, using the below command..
Note : Before proceeding, please make a back up of your central inventory, location can be picked from /etc/oraInst.loc
from $ORACLE_HOME/oui/bin
./runInstaller -silent -local -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/oracle/DEV/db/tech_st/11.2.0.2" ORACLE_HOME_NAME="DEV1_DB__u01_app_oracle_DEV1_db_tech_st_11_2_0_2" CLUSTER_NODES=ora-rac01,ora-rac02,ora-rac03 LOCAL_NODE=ora-rac01
this should attach the ORACLE_HOME to the local node and opatch lsinventory run would be successful.
Note : This is purely to share the experience and anticipating this article would help some one in similar situations. Please be cautious when working on your environments.
No comments:
Post a Comment