在开发过程中,我发现数据库有大量的活动连接:
SELECT username, COUNT(*) FROM v$session GROUP BY username;
为了找到谁实际保持连接,我想获取一个 IP 地址列表。
在一般的网络搜索和阅读官方文档期间,我构建了查询:
SELECT username, seconds_in_wait, machine, port, terminal, program, module, service_name
FROM v$session
WHERE type = 'USER';
machine
最重要的部分在哪里select
。但不幸的是,machine
字段显示客户端操作系统已知的主机名。
互联网上充满了使用UTL_INADDR.GET_HOST_ADDRESS的建议,这在我的情况下不适用。首先是因为ORA-24247:网络访问被访问控制列表 (ACL) 拒绝,其次是因为客户端操作系统主机名通常定义在/etc/hostname中,并且对于我们内部网中的 DNS 服务器不可用...
任何其他方式来检索到 Oracle DB 的打开会话的 IP(数据库实例在任何情况下都保存有关其套接字的信息......)。
更新
我在受信任的 Intranet 下,但网络层次结构未知。
我试图找出哪些应用程序使用了我的表(几个应用程序服务器,我不知道所有这些)。其中一些过度使用连接,需要修复。但首先应该确定它们...