Olá andrégouveia,
Com esta querie, você identifica o IP do servidor onde se encontra o banco de dados:
Selecionar tudo
SELECT UTL_INADDR.GET_HOST_ADDRESS(HOST_NAME), HOST_NAME FROM V$INSTANCE;
Com esta outra querie, você identifica o endereço IP de uma sessão SQL*Plus cliente:
Esta querie acima irá retornar NULL, caso a sessão não esteja usando TCP/IP na conexão.
Você também pode ter uma visão geral de todas as sessões de banco existentes:
Agora, veja bem. Sobre esta procedure que você diz existir no banco de dados: como ela é exatamente executada? Quem a executa?
Digamos que esse comando esteja em em sua procedure:
Se por exemplo você abrir uma sessão SQL*Plus na sua máquina e chamar a procedure, o SYS_CONTEXT deverá retornar exatamente o endereço IP onde você iniciou a sua sessão SQL (sua estação de trabalho).
Mas no caso de sua procedure ser executada por alguma aplicação WEB, o máximo que você vai conseguir obter será o endereço IP do servidor de aplicação que iniciou a sessão SQL de banco de dados.
Digamos ainda que a sua procedure seja disparada por um JOB dentro do banco de dados (DBMS_JOB). O endereço IP retornado será o do próprio servidor de banco de dados.
Espero ter ajudado a esclarecer suas dúvidas. Fique à vontade para efetuar mais perguntas,
Abraços,
Sergio Coutinho