Watch those environment variables
Posted by Martin Bach on February 26, 2010
One of my colleagues was about to install another ORACLE_HOME to our 3 node production cluster, with limited time available to him, as always on Saturdays. To make matters worse, OUI wouldn’t play ball and complain that the ORACLE_HOME location selected isn’t sharable. Pardon me? None of the file systems on the cluster are actually shared file systems and neither did we see this problem before. After selecting which nodes to install the software to, OUI opened a window with this message (taken from the logfile)
The datafile storage location for Oracle Real Application Clusters should be on a shared file systemINFO: Calling Query cfsprereqQueries10.2.0.1.0 isOHonCFS oraclehome = /u01/app/oracle/product/10.2.0/db_2/oradata/ nodeList = clusternode002c,clusternode002b,clusternode002a, localNode = clusternode002c INFO: Query Returned: false INFO: *** Error Dialog: OUI-10150:Error: The datafile storage location for Oracle Real Application Clusters should be on a shared file system. in component Oracle Database 10g 10.2.0.1.0 . Installation cannot continue for this component. *** INFO: User Selected: Stop installation of all products.
So what was that all about? Clearly once can install a RAC ORACLE_HOME on shared storage (which I don’t recommend) but since when has this been a requirement? My colleague tried various other approaches, but none of them was successful.
I joined the troubleshooting efforts shortly thereafter and put my money on environment variables. In a global team it’s inevitable that some people save their preferred environment in $HOME/.bash_profile and/or $HOME/.bashrc. This can have quite negative effacts as we will see later.
I simply moved the files out of the way-my $HOME/.bashrc $HOME/.bashrc.ignore (same for .bash_profile) and restarted oui. This solved the problem, the warning went away. This leads me straight to the installation instructions which states
“Enter the following commands to ensure that the ORACLE_HOME and TNS_ADMIN environment variables are not set:
* Bourne, Bash, or Korn shell:
$ unset ORACLE_HOME
$ unset TNS_ADMIN
* C shell:
% unsetenv ORACLE_HOME
% unsetenv TNS_ADMIN”
We had plenty more defined-ORACLE_HOME, LD_LIBRARY_PATH etc. The difficult thing here is that there is no apparent red herring here to give the problem away. All I can say afte trawling through the logs is that if you find lines like “orahome_path = /u01/app/oracle/product/10.2.0/db_1″ corresponding to your ORACLE_HOME environment variable, it won’t work.
When I ran OUI the lofile reported this:
"INFO: Calling Query cfsprereqQueries10.2.0.2.0 isOHonCFS oraclehome = /u01/app/oracle/product/10.2.0/db_2/install nodeList = ukwhprodorc002c,ukwhprodorc002b,ukwhprodorc002a localNode = ukwhprodorc002c INFO: Query Returned: false INFO: *** Entering Component: oracle.has.db installation"
Very similar to the above-both times the query returned false, but the first time OUI complained about error 10150 (for which there is no trace in metalink!), the second time around it all worked.
Very strange. So, the lesson to be learned is not to set any Oracle environment variables prior to running OUI 10.2. This has obviously changed in 11.1 where you have to set at least ORACLE_BASE for RDBMS installations.