查询所有连接到ORACLE服务器的客户端IP地址的方法

【说明】

    Oracle中通过v$session表中的OSUSER和MACHINE字段可以查看当前客户端登陆连接的操作系统名称”和“机器名”,但没能查看到客户端电脑IP。

查询:select * from v$session where username='HFY120401';

查询所有连接到ORACLE服务器的客户端IP地址的方法

利用触发器实现查看所有客户端IP的方法

收集了网上的一些做法,做个总结,方便以后用,其操作步骤:

1. 在sys模式下创建一个表,用于记录客户端登录数据库服务器的详细信息

 create table login_history 
 ( 
  username   varchar2(60),  --用户名  
   machine    varchar2(60),  --机器名  
   login_time date,          --登录时间  
  ip         varchar2(50)   --ip地址  
 );

2. 在sys模式下创建一个触发器:

 create or replace trigger login_log 
   after logon on database 
 begin 
   insert into login_history 
    select username, machine, sysdate, sys_context('userenv', 'ip_address') 
      from v$session 
      where audsid = userenv('sessionid'); 
   commit; 
 end;

3.  一些查看session数的实例(以sys用户登录)

 select * from login_history;