[20200109]主机名如何定位IP.txt

来源:这里教程网 时间:2026-03-03 14:46:24 作者:

[20200109]主机名如何定位IP.txt --//论坛自己问的问题.http://www.itpub.net/thread-2123724-1-1.html > select distinct program,module,action,client_id,machine from V$ACTIVE_SESSION_HISTORY where sql_id='5yqm7qry03mcg' and sample_time > =trunc(sysdate); PROGRAM MODULE ACTION  CLIENT_ID  MACHINE ------- ------ ------- ---------- --------------------                                   WIN-FNKVKB319PM 1 row selected. --//其它信息都没有,如果知道这个主机名WIN-FNKVKB319PM的IP地址呢? R:\>ping WIN-FNKVKB319PM Ping 请求找不到主机 WIN-FNKVKB319PM。请检查该名称,然后重试。 --//以前加入登录触发器如下:这样v$session的CLIENT_INFO字段记录了IP地址。 --//注:如果打开DBMS_SESSION.set_identifier (v_client_info),我们生产系统会产生大量trace。 CREATE OR REPLACE TRIGGER SYS.ENABLE_PARA_CURSOR_SHARING --  10046 TRACELEVELS    -- 0  - Turn off tracing.    -- 1  - Basic SQL_TRACE.    -- 4  - Level 1 plus Bind Variables.    -- 8  - Level 1 plus wait events.    -- 12 - Level 1 plus Bind/Wait event information.    AFTER LOGON    ON DATABASE DECLARE    v_exe           v$session.program%TYPE;    v_client_info   v$session.client_info%TYPE;    v_sid           v$session.SID%TYPE;    v_osuser        v$session.osuser%TYPE;    v_machine       v$session.machine%TYPE;    v_module        v$session.module%TYPE;    v_ok            VARCHAR (10); BEGIN    SELECT NVL(SYS_CONTEXT ('userenv', 'ip_address'),'127.0.0.1') INTO v_client_info FROM DUAL;    -- add and set clint_ip to application_info    DBMS_APPLICATION_INFO.set_client_info (v_client_info);    --增加的代码    --   DBMS_SESSION.set_identifier (v_client_info);    ... END; / --//不过我们在登录是设置DBMS_APPLICATION_INFO.set_client_info (v_client_info);,这样v$session的CLIENT_INFO字段记录了IP地址。 > select distinct client_info from V$SESSION where machine='WIN-FNKVKB319PM'; CLIENT_INFO -------------------- 192.168.XXX.XXX --//只要这台机器登录,就能查询到IP,做一个记录。 --//实际上如果设置DBMS_SESSION.set_identifier (v_client_info),在V$ACTIVE_SESSION_HISTORY的client_id字段就会记录IP地址。 --//自己测试看看: 1.环境: SCOTT@book> @ ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production CREATE OR REPLACE TRIGGER SYS.ENABLE_PARA_CURSOR_SHARING    --  10046 TRACELEVELS    -- 0  - Turn off tracing.    -- 1  - Basic SQL_TRACE.    -- 4  - Level 1 plus Bind Variables.    -- 8  - Level 1 plus wait events.    -- 12 - Level 1 plus Bind/Wait event information.    AFTER LOGON    ON DATABASE DECLARE    v_exe           v$session.program%TYPE;    v_client_info   v$session.client_info%TYPE;    v_sid           v$session.SID%TYPE;    v_osuser        v$session.osuser%TYPE;    v_machine       v$session.machine%TYPE;    v_module        v$session.module%TYPE;    v_ok            VARCHAR (10); BEGIN    SELECT NVL(SYS_CONTEXT ('userenv', 'ip_address'),'127.0.0.1') INTO v_client_info FROM DUAL;    -- add and set clint_ip to application_info    DBMS_APPLICATION_INFO.set_client_info (v_client_info);    --增加的代码    DBMS_SESSION.set_identifier (v_client_info); END; / 2.登录执行: SCOTT@78> select count(*) from emp,emp,emp,emp,emp,emp,emp;   COUNT(*) ----------  105413504 --//确定sql_id=gau6fcukuvcz7. SCOTT@78> select distinct program,module,action,client_id,machine from V$ACTIVE_SESSION_HISTORY where sql_id='gau6fcukuvcz7' and sample_time > =trunc(sysdate)-1/24; PROGRAM     MODULE       ACTION CLIENT_ID    MACHINE ----------- ------------ ------ ------------ ------------------ sqlplus.exe SQL*Plus            192.168.xx.y WORKGROUP\XXX84BCP --//这样V$ACTIVE_SESSION_HISTORY的CLIENT_ID字段就有记录。

相关推荐