Imaginando que nos conectamos em um ambientes onde ninguém tenha nenhum histórico, e que não tenha informações mínimas para definir as variáveis de ambiente ORACLE_BASE, ORACLE_HOME e ORACLE_SID. Uma alternativa seria inicialmente identificarmos o PID de um dos processos de background da instância oracle:
[oracle@oel7 ~]$ ps -ef | grep smon
grid 4003 1 0 20:07 ? 00:00:00 asm_smon_+ASM
oracle 4136 1 0 20:08 ? 00:00:00 ora_smon_cortex
oracle 10547 5226 0 21:59 pts/0 00:00:00 grep --color=auto smon
[oracle@oel7 ~]$
O PID de nosso exemplo é o 4093. Agora podemos utilizar o comando abaixo para identificar o ORACLE_HOME:
[oracle@oel7 ~]$ lsof -p 4136 | grep 'bin\/oracle' | awk '{ print $9 }'
[oracle@oel7 ~]$
Caso não exista retorno no comando, como no meu exemplo acima, basta executá-lo conectado com root:
[root@oel7 ~]# lsof -p 4136 | grep 'bin\/oracle' | awk '{ print $9 }'
/oracle/19.3.0/product/bin/oracle
[root@oel7 ~]#
Com esta informação preliminar, já poderemos definir as variáveis necessárias.
Isso é possível através do comando lsof. No exemplo abaixo, temos informações básicas sobre processos que estão utilizando um arquivo em específico:
[root@oel7 ~]# lsof /oracle/19.3.0/product/bin/oracle
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ora_pmon_ 4093 oracle txt REG 8,97 441253104 542154 /oracle/19.3.0/product/bin/oracle
ora_clmn_ 4095 oracle txt REG 8,97 441253104 542154 /oracle/19.3.0/product/bin/oracle
ora_psp0_ 4097 oracle txt REG 8,97 441253104 542154 /oracle/19.3.0/product/bin/oracle
...