ORACLE数据库记录/查询客户端IP地址信息

在oracle数据库中,通过gv$session视图只能查询到登陆的会话的机器名信息,无法获取准确的IP地址。应该如何处理呢?

方法一:

该方法适用于查询历史的登陆信息的IP地址,但是如果关闭了监听日志的情况下该方法不适用。

如果开启了监听日志,那么我们可能根据时间范围查找对应的监听日志来获取IP地址信息。

监听日志存放路径默认为:ORACLE_BASE 下的\diag\tnslsnr\zlsoft-9e1e6253\listener\trace\listener.log

 

方法二:

 该方法需要先执行触发器,后续在gv$session视图中就可以查询到执行触发器后所有会话的IP地址信息。

      步骤一:

适用SYS用户或其他DBA用户执行如下的触发器

create or replace trigger on_logon_trigger
  after logon on database
begin
  dbms_application_info.set_client_info(sys_context('userenv',
                                                    'ip_address'));
end;

     步骤二:

    查询v$session视图中的clirnt_info字段,该字段记录了IP地址信息

select t.client_info,t.MACHINE,t.SID,t.SERIAL#,t.PROGRAM,t.LOGON_TIME,t.USERNAME from v$session  t where t.logon_time>sysdate-1

方法三:

   可以通过触发器的方式将客户端登陆的信息记录到自己创建中间表中

触发器示例:

create or replace trigger tri_logon after logon on database
     begin
         insert into LOGON_TABLE
                   ( logon_time,
                     username,
                     host,
                     os_user,
                     ip_address
                   )
             values 
                  ( sysdate,
                    sys_context('USERENV', 'SESSION_USER'),
                    sys_context('USERENV','HOST'),
                    sys_context('USERENV','OS_USER'),
                    sys_context('USERENV','IP_ADDRESS'));
    end;

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂狼的小蝴蝶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值