我正在使用 Oracle EBS R2 是否有任何解决方案来获取客户端机器的 IP 地址

问题描述

我尝试了以下方法,但它是基于用户的。无论哪个用户连接到该地址,我都在尝试获取客户端计算机 IP 地址。

SELECT distinct 
       c.CLIENTIP
  FROM v$process a,v$session b,fnd_logins c,fnd_user d
 WHERE a.pid = c.pid
   AND d.user_id = c.user_id
   and d.user_name = '&User_name'
   AND a.addr = b.paddr
   AND c.end_time IS NULL;

解决方法

您可以删除过滤器并在选择中包含用户名。你不需要连接固定视图 (v$...) 所以我已经删除了它们。我不知道数据模型,很可能还有您感兴趣的其他列。

这将返回登录用户的名称和客户端 IP

SELECT distinct 
        d.user_name,c.CLIENTIP
FROM fnd_logins c,fnd_user d
WHERE d.user_id = c.user_id
AND c.end_time IS NULL;
,

您可以使用闪电战报告 FND User Login History 中的 SQL,显示所有用户的数据以及从 fnd_logins 到其他 FND 数据的附加连接。

,

Andrew 的查询应该在不限制用户的情况下为您提供查询。

MOS Note 2069190.1 的第 3 节和相关的 zip 有一些 fnd 登录和 icx 会话表的示例查询,这些查询对此类查询以及表之间的连接很有用。

在 E-Business Suite 中查询 IP 地址时要记住以下几点:

  • 目前仅在 FND 登录表中捕获客户端 IP 地址,不适用于 HTML(自助服务)页面(尽管在未来版本中可能会发生变化)。
  • 可以在 Apache 访问日志中找到 HTML 页面的 IP 地址 - 但很难将这些地址与特定用户相关联。
  • 如果您的电子商务套件前有负载平衡器或反向代理,您很可能会获得该机器的 IP 地址,除非您通过客户端 IP 传递 - 但这是另一个问题。