Oracle中客户端连接的MAC和IP地址
Posted
技术标签:
【中文标题】Oracle中客户端连接的MAC和IP地址【英文标题】:Client connection's MAC and IP address in Oracle 【发布时间】:2012-08-20 13:44:26 【问题描述】:在 MS SQL Server 下,您可以使用 master.sys.sysprocesses 和 master.sys.dm_exec_connections 系统视图来检索 MAC 地址和 IP 地址给定 TCP/IP 客户端连接。
有没有办法在 Oracle 数据库中做到这一点?
提前致谢!
【问题讨论】:
在使用 SQL 视图时,我可以看到 IP 地址,但看不到 MAC - 此外,客户端可能位于任意数量的网络硬件后面,因此服务器不太可能知道它们的 MAC 地址反正。您是如何使用这些信息的? @Damien 现在你让我好奇了——你如何从 SQL 视图中获取 IP 地址? @FrankSchmitt - 抱歉,我漏掉了“服务器”这个词 - 我可以在问题中提到的 SQL Server 视图中看到 IP 地址。 【参考方案1】:你可以尝试从sys_context获取IP:
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;
【讨论】:
【参考方案2】:可以通过查询v$session获取客户端的机器名,也可以尝试使用utl_inaddr.get_host_address()获取主机名的IP地址,但是
您必须对来自 v$session 的机器名进行额外处理,因为它并不总是有效的主机名 如果不直接查询操作系统,您将无法获得 MAC 地址事实上,我很惊讶 SQL 服务器提供了这些信息——我猜它正在后台进行 ARP 查找以获取给定 IP 地址的 MAC 地址。当然,您可以在应用程序代码中模仿这一点。
您为什么需要这些信息?
【讨论】:
以上是关于Oracle中客户端连接的MAC和IP地址的主要内容,如果未能解决你的问题,请参考以下文章