I had a question about how to quickly identify which Oracle process runs out of which ORACLE_HOME on Linux.
I have uploaded a little script for that – it’s basically looking up all PMON process IDs and then using /proc/PID/exe link to find out where is the oracle binary of a running process located.
You may have to run this as root (as on some Linux versions I get “ls: cannot read symbolic link: Permission denied” error even when running this command as the owner of all Oracle homes (it seems to happen when your users UID and primary GID are different than thet setuid/setgid bits on the oracle binary):
oracle@linux03:~$ sudo ./findhomes.sh PID NAME ORACLE_HOME 4421 asm_pmon_+ASM /u01/app/oracle/product/11.2.0/db_1/ 4545 ora_pmon_demo112 /u01/app/oracle/product/11.2.0/dbhome_1/ 4547 ora_pmon_test112 /u01/app/oracle/product/11.2.0/dbhome_1/
You can use a similar approach on other Unixes too where the executable location or current working directory (CWD) is externalized in the /proc filesystem – or just use pmap to get this info instead.
NB! Dates updated: After a 1.5 year break, this year’s only Advanced Oracle Troubleshooting training class (updated with Oracle 12c content) takes place on 14-18 December 2015 and 11-15 January 2016 (I had to reschedule the start from November to December). So sign up now if you want to learn new cool stuff!