How to list files opened by Oracle Linux Processes

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

...

Leave a Comment

Your email address will not be published.