查询获取客户端IP

疑问?
1.数据库出现性能问题,在追查过程中定位到执行SQL所在Session对应的MACHINE机器,但是无法定位到问题机器IP地址?
2.如何查询客户端IP地址信息

两种方式
1.创建触发器,登陆的session信息自动记录到一个表中,后续可以根据表的信息得到登陆的IP地址
create table login_his  
 (  
   username   varchar2(60),  --用户名   
   machine    varchar2(60),  --机器名   
   login_time date,          --登录时间   
   ip         varchar2(50)   --ip地址   
 );
 
 create or replace trigger login_log  
   after logon on database  
 begin  
   insert into login_his  
     select username,machine,sysdate,sys_context('userenv','ip_address')  
       from v$session  
      where audsid = userenv('sessionid');  
   commit;  
 end;
 
 
2.实时查询,通过v$session字段的限制条件,查询登陆的客户端地址。
  返回客户端IP地址
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions184.htm#SQLRF06117
TEST 测试windows登陆vmware某一台虚拟机oracle db测试,远程连接
SQL>select SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from dual;
IP_ADDRESS
--------------------------------------------------------------------------------
192.168.20.1

已知两个条件
SQL> select sid from v$mystat group by sid;
       SID
----------
         6
SQL> select sid,serial#,username,osuser,machine,program,SQL_ID,MODULE from v$session where MACHINE='WORKGROUP\ZHUOYANG';
       SID    SERIAL# USERNAME   OSUSER          MACHINE              PROGRAM              SQL_ID        MODULE
---------- ---------- ---------- --------------- -------------------- -------------------- ------------- --------------------
         6         15 SYS        Thinkpad        WORKGROUP\ZHUOYANG   sqlplus.exe                        sqlplus.exe
通过v$session进行查询,可以查询到信息         
SQL> select sid,serial#,username,osuser,machine,program,SQL_ID,MODULE,SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from v$session where MACHINE='WORKGROUP\ZHUOYANG';
       SID    SERIAL# USERNAME   OSUSER          MACHINE              PROGRAM              SQL_ID        MODULE               IP_ADDRESS
---------- ---------- ---------- --------------- -------------------- -------------------- ------------- -------------------- ------------------------------
         6         15 SYS        Thinkpad        WORKGROUP\ZHUOYANG   sqlplus.exe                        sqlplus.exe          192.168.20.88

SQL> select sid,serial#,username,osuser,machine,program,SQL_ID,MODULE,SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from v$session where sid=6;
       SID    SERIAL# USERNAME   OSUSER          MACHINE              PROGRAM              SQL_ID        MODULE               IP_ADDRESS
---------- ---------- ---------- --------------- -------------------- -------------------- ------------- -------------------- ------------------------------
         6         15 SYS        Thinkpad        WORKGROUP\ZHUOYANG   sqlplus.exe                        sqlplus.exe          192.168.20.88
         
历史信息如何查询?
SQL> select MACHINE,PROGRAM,SAMPLE_ID,SAMPLE_TIME,SESSION_ID,SESSION_SERIAL#,USER_ID,SQL_ID,event,SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from v$active_session_history where MACHINE='WORKGROUP\ZHUOYANG';
no rows selected
SQL>  select MACHINE,PROGRAM,SAMPLE_TIME,SESSION_ID,USER_ID,SQL_ID,event,SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from v$active_session_history where SESSION_ID=6;
MACHINE              PROGRAM              SAMPLE_TIME                    SESSION_ID    USER_ID SQL_ID        EVENT      IP_ADDRESS
-------------------- -------------------- ------------------------------ ---------- ---------- ------------- ---------- ------------------------------
enmo                 oracle@enmo (J001)   20-JAN-20 01.16.04.266 AM               6          0 0w48385039vuw            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.16.03.266 AM               6          0 1xfxhadzygjxh            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.16.02.256 AM               6          0 8h8p5uvcu6rn0            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.16.01.256 AM               6          0 0kkhhb2w93cx0            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.16.00.256 AM               6          0 53c2k4c43zcfx            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.15.59.256 AM               6          0 53c2k4c43zcfx            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.15.58.256 AM               6          0 53c2k4c43zcfx            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.15.57.256 AM               6          0 53c2k4c43zcfx            192.168.20.88
enmo                 oracle@enmo (J001)   20-JAN-20 01.15.56.256 AM               6          0 53c2k4c43zcfx            192.168.20.88
9 rows selected.

         

猜你喜欢

转载自www.cnblogs.com/lvcha001/p/12218009.html