snippetMinor
How do you find home information for Oracle RAC on Unix?
Viewed 0 times
unixhowyouracforhomefindoracleinformation
Problem
Need help finding Oracle home path corresponding to a database instance in RAC environment. I am aware of few of the ways to achieve the same. Listing them below to avoid the same answers.
-
This file is not mandatory and hence may not have all instance information.
-
Parsing contents of Listener.ora
In RAC environment, the listener.ora can be located at non default location.
-
use TNS_ADMIN to find Listener.ora location and parse the file.
-
ORACLE_HOME env variable
May not be set always.
-
Gives path for currently running listener
-
The schema sysman can be dropped after first time login to oracle.
-
So if a DBA changes Oracle Home (and hence the location of libqsmashr.so) after installation of Oracle, the path retrieved from above query would be invalid.
-
Works only for 11g
I am trying to find out a generic way which will work for all Oracle versions and it should not be dependent on anything which is not useful to DBA.
Do you have any way other than listed above to do the same?
Many Thanks in advance.
-
/etc/oratabThis file is not mandatory and hence may not have all instance information.
-
Parsing contents of Listener.ora
In RAC environment, the listener.ora can be located at non default location.
-
use TNS_ADMIN to find Listener.ora location and parse the file.
-
ORACLE_HOME env variable
May not be set always.
-
ps -ef | grep tns to get the home path from service name.Gives path for currently running listener
-
select "SYSMAN"."MGMT$TARGET_COMPONENTS"."HOME_LOCATION"
from "SYSMAN"."MGMT$TARGET_COMPONENTS"
where "SYSMAN"."MGMT$TARGET_COMPONENTS"."TARGET_NAME" = The schema sysman can be dropped after first time login to oracle.
-
SELECT NVL(SUBSTR(FILE_SPEC, 1, INSTR(FILE_SPEC, '\', -1, 2) -1) , SUBSTR(FILE_SPEC, 1, INSTR(FILE_SPEC, '/', -1, 2) -1)) FOLDER
FROM DBA_LIBRARIES
WHERE LIBRARY_NAME = 'DBMS_SUMADV_LIB';So if a DBA changes Oracle Home (and hence the location of libqsmashr.so) after installation of Oracle, the path retrieved from above query would be invalid.
-
. oraenvWorks only for 11g
I am trying to find out a generic way which will work for all Oracle versions and it should not be dependent on anything which is not useful to DBA.
Do you have any way other than listed above to do the same?
Many Thanks in advance.
Solution
First of all, I should thank you for all other steps that you mentioned above.
As an addition to your points, I have this one which I've been using so far.
Solaris and Linux
HPUX
AIX
Personally, I haven't seen any environment that tries to confuses the person who will maintain the system.
Most of the time, I've always seen the normal /u01/app/oracle for the ORACLE_BASE.
As an addition to your points, I have this one which I've been using so far.
Solaris and Linux
$ pgrep -lf _pmon_
12586 ora_pmon_ee10204
ORACLE_SID is ee10204
$ pwdx 12586
12586: /u01/oracle/10.2.0.4/ee1/dbs
ORACLE_HOME is /u01/oracle/10.2.0.4/ee1HPUX
$ ps -ef | grep pmon
ora1024 25611 1 0 Mar 21 ? 0:24 ora_pmon_itanic10
ORACLE_SID is itanic10
$ pfiles 25611 | grep bin
25611: /opt/ora1024/app/db_1/bin/oracle
ORACLE_HOME is /opt/ora1024/app/db_1AIX
$ ps -ef | grep pmon
ora1024 262314 1 0 Mar 23 - 0:12 ora_pmon_mercury
ORACLE_SID is mercury
$ ls -l /proc/262314/cwd
lr-x------ 2 ora1024 dba 0 Mar 23 19:31 cwd -> /data/opt/app/product/10.2.0.4/db_1/dbs/
ORACLE_HOME is /data/opt/app/product/10.2.0.4/db_1Personally, I haven't seen any environment that tries to confuses the person who will maintain the system.
Most of the time, I've always seen the normal /u01/app/oracle for the ORACLE_BASE.
Code Snippets
$ pgrep -lf _pmon_
12586 ora_pmon_ee10204
ORACLE_SID is ee10204
$ pwdx 12586
12586: /u01/oracle/10.2.0.4/ee1/dbs
ORACLE_HOME is /u01/oracle/10.2.0.4/ee1$ ps -ef | grep pmon
ora1024 25611 1 0 Mar 21 ? 0:24 ora_pmon_itanic10
ORACLE_SID is itanic10
$ pfiles 25611 | grep bin
25611: /opt/ora1024/app/db_1/bin/oracle
ORACLE_HOME is /opt/ora1024/app/db_1$ ps -ef | grep pmon
ora1024 262314 1 0 Mar 23 - 0:12 ora_pmon_mercury
ORACLE_SID is mercury
$ ls -l /proc/262314/cwd
lr-x------ 2 ora1024 dba 0 Mar 23 19:31 cwd -> /data/opt/app/product/10.2.0.4/db_1/dbs/
ORACLE_HOME is /data/opt/app/product/10.2.0.4/db_1Context
StackExchange Database Administrators Q#43729, answer score: 2
Revisions (0)
No revisions yet.