精华内容
下载资源
问答
  • oracle:获取sessionIP地址

    千次阅读 2012-06-01 14:14:03
    创建触发器: create orreplace trigger login_on alfterlogon on database ...dbms_application_info.set_client_info(sys_context('userenv','ip_address'));...这样以后在连接到DB的session,就会

    创建触发器:

    create orreplace trigger login_on

    alfterlogon on database

    begin

    dbms_application_info.set_client_info(sys_context('userenv','ip_address'));

    end;

    /

    这样以后在连接到DBsession,就会自动在v$session动态视图的client_info列记录sessionIP地址了。


    展开全文
  • sql 获取 session 客户端的 IP 地址

    千次阅读 2013-08-01 18:36:25
    在 Oracle 中如何确定远程 session 客户端的 IP 地址 前几天,Daniel 所在的环境多个数据库发生了一件惨案:我们把所有数据库主机、数据库的密码更改后, 硬件总集成的一台 windows 主机安装了一个 Oracle...

    http://blog.csdn.net/xiangsir/article/details/8693734


    在 Oracle 中如何确定远程 session 客户端的 IP 地址



    前几天,Daniel 所在的环境多个数据库发生了一件惨案:我们把所有数据库主机、数据库的密码更改后,
    硬件总集成的一台 windows 主机安装了一个 Oracle数据库监控工具,不断尝试利用错误的密码(有错有对)
    连接到我们的数据库中,导致生产环境多个数据库发生大量的 library cache lock 等待事件,虽说对应用
    没带来影响,但是给数据库运维带来了巨大麻烦,所有的登录尝试都失败。十几个人、几家厂商查了一天多
    最后还是凭感觉找到了那台windows主机和机主。这次事故给了我们惨痛的教训,使我不得不研究一下怎样
    获得远程 session 的客户端 IP 地址,快速定位这类问题。Oracle 中获得 session 的客户端 IP 地址主要
    分为当前 session 和非当前 session 的 IP 地址。


    1、如何当前 session 的客户端 IP 地址


    使用 SYS_CONTEXT namespace 可以获得当前 session 的客户端 IP 地址


    [oracle@prod admin]$ sqlplus system/oracle123@prod


    SQL*Plus: Release 11.2.0.3.0 Production on Tue Mar 19 20:48:47 2013


    Copyright (c) 1982, 2011, Oracle.  All rights reserved.


    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options


     col "My IP Address" for a30
     SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') "My IP Address"  from dual;


    My IP Address
    ------------------------------
    192.168.8.160


    注意:要想测试此方法不能通过操作系统认证方式连接到数据库,必须通过TNS,因为前者是通过IPC协议
    连接,后者才是通过 TCP/IP 协议连接。


    2、如何获得所有远程 Session 的客户端 IP 地址

    在 Oracle 数据库中没有直接获取远程 session 客户端 IP 地址的方法。但是存在直接获取当前
    session 客户端 IP 地址的方法。通过在数据库中创建 after logon 触发器,再结合使用 
    DBMS_APPLICATION_INFO.SET_CLIENT_INFO 存储过程,我们可以通过查询 v$session 来获取所有
    远程 session 的客户端 IP 地址。


    首先,创建如下触发器:




    CREATE OR REPLACE TRIGGER login_on AFTER LOGON ON DATABASE
    DECLARE
    ipinfo VARCHAR2(30);
    BEGIN
    SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') INTO ipinfo FROM DUAL;
    DBMS_APPLICATION_INFO.SET_CLIENT_INFO(ipinfo);
    END;
    /


    然后使用任意的用户远程(TNS)连接到数据库中,然后通过查询以下语句便可查看该 session 的客户端 IP 地址:


     conn scott/tiger@prod



     col sys_context('userenv','sid') for a40
     select sys_context('userenv','sid') from dual;


    SYS_CONTEXT('USERENV','SID')
    ----------------------------------------
    125

    用 system 用户创建一个 session 连接,在该 session 中来查询 scott 用户创建的 session 的客户端 IP 地址:


    col client_info for a30

    col CLIENT_IDENTIFIER for a30
    select username,sid,serial#,client_info,client_identifier from v$session  where sid=125;


    USERNAME                              SID    SERIAL# CLIENT_INFO                    CLIENT_IDENTIFIER
    ------------------------------ ---------- ---------- ------------------------------ ------------------------------
    SCOTT                                 125          35 192.168.8.160



     select username,sid,serial#,client_info,client_identifier from v$session where sid=18;


    USERNAME                              SID    SERIAL# CLIENT_INFO                    CLIENT_IDENTIFIER
    ------------------------------ ---------- ---------- ------------------------------ ------------------------------
    SCOTT                                  18         17 192.168.8.100



    [oracle@dss admin]$ sqlplus scott/tiger@prod
    SQL*Plus: Release 11.2.0.3.0 Production on Tue Mar 19 21:20:16 2013
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options


    21:21:18 scott@PROD> col  sys_context('userenv','sid') for a30
    21:21:24 scott@PROD> select sys_context('userenv','sid') from dual;


    SYS_CONTEXT('USERENV','SID')
    ------------------------------
    139



    21:08:59 sys@PROD> select username,sid,serial#,client_info,client_identifier from v$session where sid=139;


    USERNAME                              SID    SERIAL# CLIENT_INFO                    CLIENT_IDENTIFIER

    ------------------------------ ---------- ---------- ------------------------------ ------------------------------

    SCOTT                                 139        163 192.168.8.180


    展开全文
  • 问题:如题,oracle如何找出登录会话sessionIP地址? 解答:正在登录会话的IP地址,可以用v$session的client_info列找出。 select s.CLIENT_INFO,s.* from v$se...
    问题:如题,oracle如何找出登录会话session的IP地址?
    解答:正在登录会话的IP地址,可以用v$session的client_info列找出。
    select s.CLIENT_INFO,s.* from v$session s where s.MACHINE  ='WORKGROUP\TDH0WVFP5VCCAMJ'
    需要做如下设置:建立一个触发器,
    create or replace trigger trg_login_on after logon on database
    begin
      dbms_application_info.set_client_info( sys_context('userenv','ip_address'));
    end;

    2)对于历史登录会话的IP地址,保存以前登录会话ip地址在哪里呢?
    在登录会话审计表 dba_audit_trail里。
    select comment_text from dba_audit_trail s where s.TIMESTAMP between
           to_date('2017-01-11   00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
           to_date('2017-01-11 23:38:00', 'yyyy-mm-dd hh24:mi:ss')
           and userhost like upper('%xie-PCBook01%');   
    结果为:Authenticated by: DATABASE; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.2.60)(PORT=1347))

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30393770/viewspace-2132272/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/30393770/viewspace-2132272/

    展开全文
  • Oracle获取sessionIP方法

    千次阅读 2017-08-11 16:13:23
    方法1 创建触发器:  create orreplace trigger login_on  ...dbms_application_info.set_client_info(sys_context('userenv','ip_address'));  end;  /  这样以后在
    方法1


    创建触发器: 

    create orreplace trigger login_on 

    alfterlogon on database 

    begin 

    dbms_application_info.set_client_info(sys_context('userenv','ip_address')); 

    end; 





    这样以后在连接到DB的session,就会自动在v$session动态视图的client_info列记录session的IP地址了。 

    从V$SESSION中只能得到机器名, 而通过机器名不能确定到具体的机器. 所以必须得到IP 
    在oracle中的v$session视图中可以保存有会话的想关信息,包括了客户端的大部分连接信息。其中我们可以将会话的发起ip地址写入到client_identifier和client_info 
    上文中我们提到了使用userenv函数或者sys_context函数可以获得当前会话的相关信息,其中就包含的有ip_address这一项 
    当我们使用client_identifier字段来保存登录会话的ip地址的时候,我们需要用到dbms_session.set_identifier过程/函数 
    当我们使用client_info字段来保存登陆会话的ip地址的时候,我们需要用到dbms_application_info.set_client_info过程/函数 


    例:查看当前用户的ip地址: 
    MAI@test > select sys_context('userenv','ip_address') from dual; 
    SYS_CONTEXT('USERENV','IP_ADDRESS') 
    ------------------------------------- 
    192.168.77.1 


    MAI@test > select username,sid,serial#,client_info,client_identifier from v$session where sid=(select sys_context('userenv','sid') from dual); 
    USERNAME            SID    SERIAL# CLIENT_INFO          CLIENT_IDENTIFIER 
    --------------- ------- ---------- -------------------- -------------------- 
    MAI                 138      38266 
    使用client_identifier字段 
    MAI@test > exec dbms_session.set_identifier(sys_context('userenv','ip_address')); 
    MAI@test > select username,sid,serial#,client_info,client_identifier from v$session where sid=(select sys_context('userenv','sid') from dual); 
    USERNAME            SID    SERIAL# CLIENT_INFO          CLIENT_IDENTIFIER 
    --------------- ------- ---------- -------------------- -------------------- 
    MAI                 138      38270                      192.168.77.1 
    使用client_info字段 
    MAI@test > exec dbms_application_info.set_client_info(sys_context('userenv','ip_address')); 
    MAI@test > select username,sid,serial#,client_info,client_identifier from v$session where sid=(select sys_context('userenv','sid') from dual); 
    USERNAME            SID    SERIAL# CLIENT_INFO          CLIENT_IDENTIFIER 
    --------------- ------- ---------- -------------------- -------------------- 
    MAI                 138      38270 192.168.77.1         192.168.77.1 


    当然,这个过程过程可以通过一个触发器来调用,当每一个新的用户连接开启的时候自动触发该触发器,将相应的ip信息写入v$session的相应字段。 
    触发器的例子: 
    create or replace trigger on_login_trigger 
    after logon on database 
    begin 
    dbms_application_info.set_client_info(sys_context('USERENV','IP_ADDRESS')); 
    end; 

    建立这个trigger需要有dba权限,这样的话,当每个用户新登录的时候,这个触发器就会起作用,然后就能够将客户端的ip地址填充到v$session视图中的client_info字段中: 
    MAI@test > select username,sid,serial#,client_info,client_identifier from v$session where sid=(select sys_context('userenv','sid') from dual); 
    USERNAME            SID    SERIAL# CLIENT_INFO          CLIENT_IDENTIFIER 
    --------------- ------- ---------- -------------------- -------------------- 
    MAI                 149        425 192.168.77.1 

    方法2


    利用sys_context函数我们可以获得当前session的hostname和ip address 

    SQL> selectsys_context('userenv','host') from dual; 

    SYS_CONTEXT('USERENV','HOST') 
    -------------------------------------------------------------- 
    WORKGROUP\IBM-L3YMBNP 

    SQL> select sys_context('userenv','ip_address') from dual; 

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

    通过sys_context我们只能获得当前session的信息,如果要获得其他session呢? 
    这个时候我们就用utl_inaddr包来获取 

    SQL> selectutl_inaddr.get_host_address('IBM-L3YMBNP') from dual; 

    UTL_INADDR.GET_HOST_ADDRESS('IBM-L3YMBNP') 
    ------------------------------------------------------------------- 
    9.181.142.152 

    而且我们还可以获得sina以及其他web site的ip 
    SQL> select utl_inaddr.get_host_address('www.sina.com.cn') from dual; 

    UTL_INADDR.GET_HOST_ADDRESS('WWW.SINA.COM.CN') 
    --------------------------------------------------------------------- 
    218.30.108.55 

    其原理是:首先获取域名解析服务器(resolv.conf),在根据host.conf文件确定解析顺序,因为缺省的是hosts文件优先解析,这个时候会又继续读取/etc/hosts文件。 

    如果hosts文件存在解析关系,则返回信息;如果不存在,则继续问询DNS服务器,获得解析地址,如果不能解析,则会出错 
    SQL> select utl_inaddr.get_host_address('www.a.com') from dual; 
    select utl_inaddr.get_host_address('www.a.com') from dual 
           * 
    ERROR 位于第 1 行: 
    ORA-29257: 未知的主机www.a.com 
    ORA-06512: 在"SYS.UTL_INADDR", line 35 
    ORA-06512: 在"SYS.UTL_INADDR", line 40 
    ORA-06512: 在line 1 

    基本上就是这样了。 
    展开全文
  • 1、以dba的身份登陆至... create or replace trigger login_on_record_ip after logon on database begin dbms_application_info.set_client_info(sys_context('userenv', 'ip_address')); end; / 2、查询v$sessi
  • 在 Oracle 中如何确定远程 session 客户端的 IP 地址

    千次阅读 多人点赞 2013-03-21 22:04:48
    在 Oracle 中如何确定远程 session 客户端的 IP 地址 前几天,Daniel 所在的环境多个数据库发生了一件惨案:我们把所有数据库主机、数据库的密码更改后, 硬件总集成的一台 windows 主机安装了一个 Oracle...
  • 如何查看发起session的客户端ip地址

    千次阅读 2016-12-08 11:13:29
    其中我们可以将会话的发起ip地址写入到client_identifier和client_info 上文中我们提到了使用userenv函数或者sys_context函数可以获得当前会话的相关信息,其中就包含的有ip_address这一项 当我们使用client_...
  • VC 获取公网 ip 地址

    2009-08-07 16:54:27
    参考了部分网友的资源,改写了一个获取公网IP地址的方法。忘记了网友网址,如冒犯,请原谅!发布此代码的目的旨在交流。代码如下: //头文件 #include "afxinet.h" //获取公网IP地址 CString getLocalIpAddress() {...
  • IP地址获取-PPPoE&DHCP

    千次阅读 2019-07-01 09:13:25
    PC获取IP地址的方式有3种,手工配置、PPPoE获取、DHCP获取。PPPoE应用较多 PPPoE拨号 包括PPPoE Discovery、PPPoE Session、PPPoE Terminate三个阶段。 PPPoE Discovery (1)client广播发送PADI寻找server; ...
  • Mina获取客户端IP地址问题

    万次阅读 2015-04-23 19:47:10
    使用Mina做Socket通信时,服务器端获取客户端IP地址,其实很简单,代码如下: @Override public void messageReceived(IoSession session, Object message) throws Exception { String clientIP = (...
  • java web项目Session获取不到

    千次阅读 2019-02-27 15:20:59
    在servlet类中对Session进行了设置 但当servlet跳转到页面时 页面获取不到Session!!! 关于session的生命周期 Session保存在服务器端。Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、...
  • SQL 获取连接客户端IP地址

    千次阅读 2015-07-26 08:51:13
    --SQL Server 抓取连接的客户端IP地址: DECLARE @IP_Address varchar(255); SELECT @IP_Address = client_net_address FROM sys.dm_exec_connections WHERE Session_id = @@SPID; SELECT @IP_Addr
  • sessionip的对应关系

    千次阅读 2017-12-21 10:44:32
    chrome中,sessionip的对应关系是1对1,相同ip不同端口的两个应用,会出现互踢现象
  • TP5-获取客户端IP地址、退出登录

    千次阅读 2017-12-11 09:56:54
    //获取客户端ip地址 $clientIp = $this->request->ip(); //退出登录 Session::delete('admin_id'); Session::delete('admin_name');
  • * 获取客户端ip地址 * @param request * @return */ public static String getClientIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip != null && ip....
  • 通过v$session查找访问客户端的IP地址

    千次阅读 2014-02-13 14:36:52
     select b.spid,a.* from v$session a,v$process b where a.paddr=b.addr where a.machine like '%machine_name%'; 1.可以找到数据库服务器的进程ID,记住此时是数据库服务器内部进程,可以登录小机,用:ps -ef|...
  • 1、获取用户登录ip //获取用户登录ip; String loginIp = request.getHeader("X-Forwarded-For"); if (loginIp == null || loginIp.length() == 0 || "unknown".equalsIgnoreCase(loginIp)) { loginIp = request....
  • SSM框架获取用户的真实IP地址

    千次阅读 2018-05-11 15:35:06
    jsp的代码: ${pageContext.request.contextPath}/addconcat" method="post" >  留言内容" name="content" >  联系人" name="name" ...这样数据库就能获取到用户的真实IP了哦。 有不懂的地方可以评论,我会一一回答的
  • django 应用中获取访问者ip地址

    万次阅读 2018-07-03 19:55:16
    通常访问者的ip会包含在上边的键值对中,我们可以通过一下方式获取ip: 通常访问者的IP就在其中,所以我们可以用下列方法获取用户的真实IP: #X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端...
  • freeswitch获取SIP客户端IP地址

    千次阅读 2016-12-19 14:58:51
    1)从SIP消息中获取SIP客户端的IP地址和端口信息  一般从mod_sofia模块中使用:  char network_ip[80];  int port = 0;  sofia_glue_get_addr(de->data->e_msg, network_ip, sizeof(network_ip), &port);
  • Java获取本地IP地址

    万次阅读 2012-04-26 17:11:42
    import java.net.*;...publicclass ip5 { publicstaticvoid main(String args[]) throws Exception { String ip = InetAddress.getLocalHost().getHostAddress(); System.out.println(i
  • 当在一个os上安装racdb时,第一步需要确定节点的IP地址。我这里的ip地址如下: #node1 192.168.1.151 rac1.localdomain rac1 192.168.1.152 rac1-vip.localdomain rac1-vip 172.168.1.14 rac1-priv....
  • 获取SQLSERVER的IP地址

    千次阅读 2016-05-13 08:36:40
    select client_net_address '客户端IP',local_net_address '服务器的IP' from sys.dm_exec_connections where Session_id=@@spid
  • Django获取请求的IP地址

    千次阅读 2019-04-23 10:19:49
    通常每次请求的IP就在其中,所以我们可以用下列方法获取用户的真实IP: # X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 ...
  • 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
  • C# 获取电脑名IP地址及当前用户名

    千次阅读 2017-09-22 15:13:39
    在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其他好的方法,可以回复一起整理: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户...
  • 获取SQL Server中连接的客户端IP地址

    千次阅读 2011-06-09 16:59:00
    有时候需要获取连接到SQL Server服务器上的客户端IP地址,用什么办法呢?SELECT *FROM sys.dm_exec_connections WHERE session_id = @@SPID这个办法不知道在SQL2005和以前版本是否可以 如果是SQL Server2008,还...
  • C#中获取用户登录IP地址

    千次阅读 2019-05-30 14:11:00
    public string getLocalIP() { string strHostName = Dns.GetHostName(); //得到本机的主机名 IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP string strAddr = ipEn...
  • 前言:实现的功能主要是,oracle登录成功记录登录用户ip地址,登录失败记录登录失败ip地址 1,需要建立一个触发器记录登录成功的客户端用户的ip地址 大家都知道在v$session 中记录着客户端的机器名称,但是没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,874
精华内容 71,949
关键字:

session怎么获取ip地址