重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3216|回复: 0
打印 上一主题 下一主题

[讨论] 使用触发器记录登录失败时候客户端IP等信息

[复制链接]
跳转到指定楼层
楼主
发表于 2020-9-17 12:32:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近一用户老是被锁,不知道是哪一台机器登陆密码输入错误,怎么查看呢

这个问题,可以通过触发器来实现跟踪,具体如下:

写一个触发器,触发器的信息记录在alert日志里面,通过查看alert日志来获取登录失败的用户信息。


触发器如下:


CREATE OR REPLACE TRIGGERlogon_denied_to_alert


AFTER servererror ON DATABASE


DECLARE


message   VARCHAR2(168);


ip        VARCHAR2(15);


v_os_user VARCHAR2(80);


v_module  VARCHAR2(50);


v_action  VARCHAR2(50);


v_pid     VARCHAR2(10);


v_sid     NUMBER;


v_program VARCHAR2(48);


BEGIN


  IF(ora_is_servererror(1017)) THEN




   -- get ip FOR remote connections :


   IF upper(sys_context('userenv', 'network_protocol')) = 'TCP' THEN


     ip := sys_context('userenv', 'ip_address');


   END IF;




   SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2;


   SELECT p.spid, v.program


     INTO v_pid, v_program


     FROM v$process p, v$session v


    WHERE p.addr = v.paddr


      AND v.sid = v_sid;




   v_os_user := sys_context('userenv', 'os_user');


   dbms_application_info.read_module(v_module, v_action);




   message := to_char(SYSDATE, 'YYYYMMDD HH24MISS') ||


               ' logon denied from ' || nvl(ip,'localhost') || ' ' ||


               v_pid || ' ' || v_os_user || 'with ' || v_program || ' – ' ||


               v_module || ' ' || v_action;




   sys.dbms_system.ksdwrt(2, message);




  ENDIF;


END;


/



再去登陆,如果失败,在报警文件中,就可以看到以下信息了:
。。。
20200917 123233 logon denied from192.168.120.169 20958 Administrator with plsqldev.exe ? plsqldev.exe
。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-26 16:31 , Processed in 0.094986 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表