오라클에 접속한 클라이언트 IP를 추적함으로써 오라클에 영향을 줄 수 있는 클라이언트의 각종 정보를 검색하여 튜닝 및 문제점을 해결하는데 다양하게 이용될 수 있다. 



1. sys 사용자로 오라클에 접속한다. 
  
    $ sqlplus internal 

  
2. 다음에 제시한 트리거를 생성한다. 


SQL> drop table sqlclient; 
SQL> create table sqlclient ( ipno varchar2(20), sid number,  name varchar2(64)); 


SQL> create or replace procedure ip_ins is 
        curInfo    varchar2(80); 
        v_sid      number; 
        v_sno      number; 
        v_ipno    varchar2(20); 
        v_name    varchar2(64); 
        sessionid  varchar2(20); 
    begin 
        sessionid := dbms_session.unique_session_id(); 
        dbms_application_info.read_client_info(curInfo); 
        dbms_application_info.set_client_info(sessionid); 
        select  sid,  machine 
        into    v_sid,  v_name 
        from    v$session 
        where  client_info = sessionid; 
        dbms_application_info.set_client_info(curInfo); 
        — 
        v_ipno := sys_context(‘USERENV’,’IP_ADDRESS’); 
        if    v_ipno is not null then 
                insert into sqlclient 
                values    (v_ipno, v_sid, v_name ); 
                commit; 
        end if; 
    exception 
        when  dup_val_on_index then 
                update sqlclient 
                set    sid = v_sid ,  name  = v_name 
                where  ipno = v_ipno; 
                commit; 
      — when  others then 
      —        null; 
        end; 
    / 


SQL> create or replace trigger db_logon 
        after logon on database 
        begin 
          sys.ip_ins; 
      end; 
        / 

3. 클라이언트에서 TCP/IP로 오라클에 접속한 후 정보를 조회한다. 

    SQL > connect sys/
    SQL > select * from sqlclient;

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

One thought on “Client에서 접속한 IP를 알아내는 방법(DB 트리거를 이용하는 방법)”

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다