疑问?
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.