首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取oracle客户端用户的IP地址

获取oracle客户端用户的IP地址
EN

Stack Overflow用户
提问于 2015-03-04 13:11:09
回答 2查看 42.3K关注 0票数 5

我需要一个查询来获取客户端用户的所有ip,这些用户已经有一个到数据库的会话,我有一个Oracle数据库服务器在我的工作(医院),有时数据库停止工作,不能执行任何查询,由系统的Oracle模块所做的任何查询,这是用户的接口,所以解决它,我们必须杀死所有连接到数据库的会话,并使所有用户重新启动会话,我的问题是有没有办法获得ip地址与任何信息的会话,如消耗的会话?

EN

回答 2

Stack Overflow用户

发布于 2015-03-04 13:19:58

我需要一个查询来获取已经与数据库建立会话的客户端用户的所有IP

您可以使用SYS_CONTEXT。它将返回当前会话的以下主机和IP地址信息:

  • 终端-当前会话的操作系统标识符。这通常是客户端计算机名称。
  • 主机-客户端主机的主机名-客户端machine.
  • SERVER_HOST的IP地址-运行数据库实例的服务器的主机名。

看看这个蒂姆·霍尔的article吧。

例如,

代码语言:javascript
复制
SQL> SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
----------------------------------------------------------
127.0.0.1

SQL>

对我来说,IP是本地主机,所以我使用127.0.0.1

编辑来自讨论的会话在下面的注释中,要获取来自v$的所有用户的IP地址列表,您可以使用MACHINE来连接他们。

SELECT utl_inaddr.get_host_address(t.machine), t.* FROM v$session t;

票数 11
EN

Stack Overflow用户

发布于 2015-03-04 15:34:28

看一下这个查询:

代码语言:javascript
复制
SELECT username, status, osuser, process, machine, terminal, logon_time,
    lockwait, blocking_session_status, blocking_instance, blocking_session,
    UTL_INADDR.GET_HOST_ADDRESS(REGEXP_REPLACE(machine, '^.+\\')) AS client_ip  
FROM v$session;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28847063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档