我需要一个查询来获取客户端用户的所有ip,这些用户已经有一个到数据库的会话,我有一个Oracle数据库服务器在我的工作(医院),有时数据库停止工作,不能执行任何查询,由系统的Oracle模块所做的任何查询,这是用户的接口,所以解决它,我们必须杀死所有连接到数据库的会话,并使所有用户重新启动会话,我的问题是有没有办法获得ip地址与任何信息的会话,如消耗的会话?
发布于 2015-03-04 13:19:58
我需要一个查询来获取已经与数据库建立会话的客户端用户的所有IP
您可以使用SYS_CONTEXT。它将返回当前会话的以下主机和IP地址信息:
看看这个蒂姆·霍尔的article吧。
例如,
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;
发布于 2015-03-04 15:34:28
看一下这个查询:
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;https://stackoverflow.com/questions/28847063
复制相似问题