Thursday, May 6, 2021

orabase returns "XPointer evaluation failed: no locset" ; oraenv returns the same and "-bash: [: too many arguments"

The situation specific to old and tight number of Oracle Products used Oracle Universal Installer for lifetime maintenance.

orabase binary executable is used by Oracle products to set ORACLE_BASE environmental variable in the shell session. Contemporary Oracle products have a file $ORACLE_HOME/install/orabasetab which is read by orabase executable to set ORACLE_BASE for current ORACLE_HOME. Some older orabase (32-bit) executables read the file $ORACLE_HOME/inventory/ContentsXML/oraclehomeproperties.xml in order to set ORACLE_BASE.

The issue can be a result of an accident when sometimes (and somehow) the Oracle installer (via installation of the patches or performing a deinstallation (even being operating on another ORACLE_HOME)) corrupts oraclehomeproperties.xml file (located in $ORACLE_HOME/inventory/ContentsXML) cutting out property ORACLE_BASE from it. The fix is to restore it from backup or modify manually.

The following example is an example of corrupted xml file :

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 1999, 2015, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<ORACLEHOME_INFO>
   <GUID>113393302.#259383652</GUID>
   <HOME/>
   <ARU_PLATFORM_INFO>
       <ARU_ID>226</ARU_ID>
       <ARU_ID_DESCRIPTION>Linux x86-64</ARU_ID_DESCRIPTION>
   </ARU_PLATFORM_INFO>
</ORACLEHOME_INFO>


The following example is an example of restored xml file :

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 1999, 2015, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<ORACLEHOME_INFO>
   <GUID>113393302.#259383652</GUID>
   <HOME/>
   <ARU_PLATFORM_INFO>
       <ARU_ID>226</ARU_ID>
       <ARU_ID_DESCRIPTION>Linux x86-64</ARU_ID_DESCRIPTION>
   </ARU_PLATFORM_INFO>
   <PROPERTY_LIST>
       <PROPERTY NAME="ORACLE_BASE" VAL="/u01/app/oracle"/>
   </PROPERTY_LIST>
</ORACLEHOME_INFO>

After modification you should relogin to the server because the contents of corrupted xml for the current session is mapped into the memory (by mmap syscall). 

Good Luck !