如何在Oracle SQL过程中为用户提供桌面/笔记本IP地址

时间:2018-08-08 15:07:53

标签: oracle plsql ip-address hostname

我正在使用服务器的腻子会话连接到oracle SQL plus,并在下面的查询中进行了操作以获取主机名和IP地址。

这些查询正在重提应用程序服务器的主机名和IP地址,但我的要求是让用户笔记本电脑的主机名和IP地址知道用户的主机名和IP地址,而不是服务器主机名和IP地址。< / p>

任何人都可以帮助获取用户(笔记本电脑)的主机名和IP地址,而不是服务器的主机名和IP地址吗?

select SYS_CONTEXT('USERENV', 'HOST', 15) INTO v_host from dual;
select SYS_CONTEXT('USERENV', 'IP_ADDRESS', 15) INTO v_ipaddress from dual;

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为Oracle Sql*plus没有有关您的putty客户的信息。

因此对于Oracle Db,客户端是您的Application Server-发起Sql*plus调用的表单。

您可能要做的一件事是设置client_info并使用这些额外的信息来确定真正的客户。

这样的东西(在SQL脚本内部)

DBMS_APPLICATION_INFO.set_client_info(client_info => '&1');

在这种情况下,您应该将putty's客户值($SSH_CLIENT环境变量)传递到您的sql脚本中:

sqlplus -S user/password@host << EOF
@/opt/D2RQ/file.sql $SSH_CLIENT
exit;
EOF

答案 1 :(得分:0)

从双选择SYS_CONTEXT('USERENV','IP_ADDRESS')

您可以使用上面的查询来获取客户端的IP地址。