感謝參考原文-http://bjbsair.com/2020-03-27/tech-info/7042/
概述
衆所周知在v$session 中記錄着客戶端的機器名稱,但是沒有IP , 如果要記錄clinet ip 應該怎麼實現呢?
select username,machine,terminal,program,client_info,logon_time from v$session;
可以看到是沒有記錄IP的。。
1、利用 DBMS_SESSION 過程包.
BEGIN
DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));
END;
2、通過觸發器
create or replace trigger on_logon_trigger
after logon on database
begin
dbms_application_info.set_client_info(sys_context( 'userenv', 'ip_address' ) );
end;
3、測試
當客戶端登陸後,在v$session的client_info列會記錄其相應的IP信息。
select username,machine,terminal,program,client_info,logon_time from v$session order by logon_time desc;