前言:实现的功能主要是,oracle登录成功记录登录用户ip地址,登录失败记录登录失败ip地址

1,需要建立一个触发器记录登录成功的客户端用户的ip地址

大家都知道在v$session 中记录着客户端的机器名称,但是没有IP , 如果记录clinet ip 呢?先运行DBMS_SESSION 过程包注册,然后执行存储过程on_logon_trigger,这样当客户端登陆后,在v$session的client_info列会记录其相应的IP信息。

利用 DBMS_SESSION 过程包,先执行

BEGIN

DBMS_SESSION.set_identifier(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));

END;

再执行触发器trigger

createorreplacetrigger on_logon_trigger

after logon ondatabase

begin

dbms_application_info.set_client_info(sys_context( 'userenv', 'ip_address' ) );

end;

执行这些过程包触发器需要dba权限。

----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:  http://blog.csdn.net/mchdba/article/details/45749131
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

2,然后使用超级管理员通过plsql登录,就可以查看连接上oracle的ip信息:

执行查询SQL:

select  username,program,machine,client_info,sys_context('userenv','ip_address') as ipadd

from v$session s

where username is not null

order by username,program,machine;

信息如下所示:

3,建立触发器实现登录失败的时候记录日志信息:

写一个触发器,触发器的信息记录在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;

/

执行报错:

Compilation errors for TRIGGERPOWERDESK.LOGON_DENIED_TO_ALERT

Error: PLS-00201: identifier'SYS.DBMS_SYSTEM' must be declared

Line: 35

Text: sys.dbms_system.ksdwrt(2, message);

Error: PL/SQL: Statement ignored

Line: 35

Text: sys.dbms_system.ksdwrt(2, message);

需要赋予权限

grant execute on sys.dbms_system topowerdesk;

之后执行成功了。

4,登录失败查看alert信息

Pslql登录,如下图所示:

再去后台查看alert日志,就会看到失败信息记录:

Fri May 15 19:11:09 2015

20150515 191109 logon denied from192.168.120.169 20934 Administrator with plsqldev.exe ? plsqldev.exe

20150515 191109 logon denied from192.168.120.169 20934 Administrator with plsqldev.exe ? plsqldev.exe

Fri May 15 19:11:18 2015

20150515 191118 logon denied from192.168.120.169 20958 Administrator with plsqldev.exe ? plsqldev.exe

20150515 191118 logon denied from 192.168.120.16920958 Administrator with plsqldev.exe ? plsqldev.exe

ORACLE 记录连接用户的IP地址以及登录失败用户的IP地址相关推荐

  1. linux用户解锁pam_tally,多次登录失败用户被锁定及使用Pam_Tally2解锁

    在linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁. 了解PAM Linux-PAM (Pluggable Authenticat ...

  2. 用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败 的解决方法(转)

    今天安装一个网站时, 出现了用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败的错误 在网上找了一些,终于找了一下,终于找到解决办法: 第一步:把'NT AUTHORITY\ ...

  3. IIS - 用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法

    "/"应用程序中的服务器错误. -------------------------------------------------------------------------- ...

  4. 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败问题

    安装了windows2003 with sp1,想用来学习asp.net,成功安装了ASP.NET Portal Starter Kit ,但是运行发现以下提示: "/PortalCSVS& ...

  5. Linux 查看登录日志及登录失败用户的ip

    2019独角兽企业重金招聘Python工程师标准>>> Linux 查看登录成功的用户信息 命令: last 最新的登录记录在最前面,所以可以用 一下命令来查看. last | le ...

  6. win10登录失败未授予用户在此计算机上,登录失败:未授予用户在此计算机上的请求登录类型。无法访问...

    登录失败:未授予用户在此计算机上的请求登录类型.无法访问.您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限. 如果出现"xxx计算机无法访问,您可能没有权限使用网 ...

  7. 无法打开登录所请求的数据库database登录失败用户登录失败

    异常详细信息: System.Data.SqlClient.SqlException: 用户 'xxx\ASPNET' 登录失败. 这是怎么回事啊? 因为你的程序连接SQLServer的连接字符串是用 ...

  8. 登录失败、请确认地址和端口

    使用智能安全联网设备客户端提示:登录服务平台连接失败,请确认地址和端口! 错误提示如下: 解决步骤: 1.ping 一下安全联网设备.人脸门禁设备IP看是否可以正常通信. 首先要知道安全联网设备.人脸 ...

  9. 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败问题解决方案

    当连接sqlserver使用信任连接(参看Web.Config文件)时就会出这个错误,在WindowsXP当中,ASP.NET的运行帐号是ASPNET,而在Windows server2003当中,运 ...

最新文章

  1. 使用SampleGrabber过滤器扑获图像
  2. c语言中不带任何修饰符的浮点变量,江苏省计算机等级考试二级C语言笔试辅导题目...
  3. Fiddler绕过前端直接和后台进行交互
  4. saltstack 远程执行之返回写入到mysql
  5. 使用CImageList的一点心得
  6. 在js中调用dede标签
  7. 渗透测试工程是的主要工作
  8. css怎么随着鼠标移动,利用CSS sprites制作随着鼠标移动的动画背景
  9. 期望、方差的线性关系证明
  10. OBS第三方推流直播教程
  11. Stimulsoft Reports.WEB 23.1.8 完美Crack
  12. 华为云云商店星品入“沪”,加速产业数字共赢!
  13. 字符串copy函数技术推演
  14. 汇顶科技外包java_汇顶科技深度分析
  15. APS食品行业生产计划排程解决方案
  16. 免费使用的pdf转cad软件使用
  17. 教你两式妙招杀死“顽固不化”的病毒进程-
  18. 操作系统的接口与实现
  19. 三星电视测试屏幕的软件有哪些,三星电视的环境屏是什么,它当真有隐身功能?...
  20. arithmetic和algorithm之间的区别?

热门文章

  1. java字符串转数组
  2. IMD中一些JS方法总结
  3. 全程物流可视化管理新模式
  4. 武汉理工大学计算机科学导论 针对复习
  5. 如何通过通达信量化交易接口达到长期的收益?
  6. 中小企业面临“招聘难”
  7. 第十三章 使用系统监视器 - 系统监视器
  8. 和Sun一起开源(武林外传游戏外挂Java源代码) - 论坛版
  9. Java 虚拟机的历史
  10. QQ帮助他人03-Skype for business 用户无法登录