오라클에 접속한 클라이언트 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;
I gotta favorite this web site it seems handy very helpful.