缺省从 v$session 中不能直接获得客户端 IP,需要执行 dbms_application_info.set_client_info 存储过程才能将登录数据终端机的 IP 地址记录在 client_info 字段中。
可以使用以下方法创建触发器来完成自动记录IP地址功能:
精简版
create or replace trigger login_on_record_ip
after logon on database
begin
dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));
end;
/
详细版
create or replace trigger login_on_record_ip
after logon on database
begin
dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));
dbms_session.set_identifier(sys_context('userenv', 'HOST'));
exception
when others then
rollback;
end;
/
本文介绍了如何在Oracle数据库中通过创建触发器,利用`dbms_application_info.set_client_info`存储过程,实现在用户登录后自动记录其客户端IP地址。详细版还包含了设置会话标识符的过程,以处理异常情况。
9804

被折叠的 条评论
为什么被折叠?



