TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-14 |
제목 | CLIENT IP ADDRESS 얻는 방법 | ||
---|---|---|---|
CLIENT IP ADDRESS 얻는 방법
=========================== 1. client쪽에서 ip를 구하는 방법은 8i에서부터 다음 sql문장으로 가능합니다. SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') "My IP Address" from dual; 2. client application 실행 시에 server 쪽에 정보를 넣는 방법도 있습니다 db trigger 이용 방법 sqlplus sys/change_on_install로 접속한 후 다음을 실행시킨다. drop table sqlclient; create table sqlclient ( ipno varchar2(20), sid number, name varchar2(64)); 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; / create or replace trigger db_logon after logon on database begin sys.ip_ins; end; / client에서 접속한 후 sys user에서 select * from sqlclient;를 해보면 접속한 user의 ip address를 볼 수 있습니다. 또 DBMS_APPLICATION_INFO.SET_CLIENT_INFO를 사용해서 v$session에 정보를 넣는 방법도 있습니다. Program에서 Service수행시작시 아래와 같이 package를 수행시키고, exec DBMS_APPLICATION_INFO.SET_CLIENT_INFO('ServiceName'); Service수행이 끝날 때 아래와 같이 package를 수행시킵니다. exec DBMS_APPLICATION_INFO.SET_CLIENT_INFO(''); 이렇게 하면, v$session의 client_info column에 해당 정보가 나오게 됩니다. 3. os 상에선 netstat -a | grep 1521나 다른 명령을 이용해서 알 수 있습니다. 4. AUDIT를 이용하는 방법이 있습니다. (1). AUDIT 기능 설정 (init AUDIT_TRAIL=DB (2). db를 restart한다. (3). AUDIT 설정 방법 $ sqlplus sys/ SQL> col COMMENT$TEXT for a100 SQL> AUDIT SESSION BY SESSION; SQL> select COMMENT$TEXT from aud$; COMMENT$TEXT -------------------------------------------------------------------------------- Authenticated by: DATABASE <--- Host 접속의 경우 Authenticated by: DATABASE; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=152.69. 18.228)(PORT=1504)) <--- Client 접속의 경우 (4). AUDIT 해제 방법 $ sqlplus sys/ SQL> NOAUDIT SESSION; |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |