[20200429]记录不成功的登录在alert文件.txt
--//别人的系统要求将不成功的登陆记录在alert中.自己随手写一个.利用sys.DBMS_SYSTEM.ksdwrt函数写alert的功能。
--//主要原因有一些团队安装数据库没有将sys.aud$移动到别的表空间,而且11g确实审计登录不管成功失败。
--//我个人建议根据应用情况修改为取消成功登录审计,并且移动sys.aud$到别的表空间。
NOAUDIT CREATE SESSION WHENEVER SUCCESSFUL;
0.建立触发器:
/* Formatted on 2020/4/29 9:01:30 (QP5 v5.269.14213.34769) */
CREATE OR REPLACE TRIGGER failed_login_write_alertlog
AFTER SERVERERROR
ON DATABASE
DECLARE
l_message VARCHAR2 (4000);
BEGIN
-- add and set client_ip to application_info
DBMS_APPLICATION_INFO.set_client_info
(
NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1')
);
-- ORA-1017: invalid username/password
IF (IS_SERVERERROR (1017))
THEN
SELECT TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss')
|| ': failed login username - '
|| SYS_CONTEXT ('userenv', 'authenticated_identity')
|| ' at '
|| TO_CHAR (logon_time, 'yyyy-mm-dd hh24:mi:ss')
|| ' from '
|| osuser
|| '@'
|| machine
|| ' - '
|| ' ip_address -'
|| NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1')
|| ' via the program - '
|| program
INTO l_message
FROM v$session
WHERE sid IN (SELECT SID
FROM v$mystat
WHERE ROWNUM =1);
-- write to alert log
sys.DBMS_SYSTEM.ksdwrt (2, l_message);
END IF;
END;
/
--//注:我喜欢使用DBMS_APPLICATION_INFO.set_client_info,这样v$session字段CLIENT_INFO记录IP地址。不喜欢可以去掉那段代码。
1.环境:
SYS@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.测试:
sqlplus scott/xxxx
sqlplus scott/xxxx@book
sqlplus scott/xxx@78
3.检查alert显示:
$ tail -f alert_book.log | ts.awk
[2020-04-29 09:03:52] Wed Apr 29 09:03:51 2020
[2020-04-29 09:03:52] 2020-04-29 09:03:51: failed login username - scott at 2020-04-29 09:03:51 from oracle@xxyyydg4 - ip_address -127.0.0.1 via the program - sqlplus@xxyyydg4 (TNS V1-V3)
[2020-04-29 09:04:00] Wed Apr 29 09:03:59 2020
[2020-04-29 09:04:00] 2020-04-29 09:03:59: failed login username - scott at 2020-04-29 09:03:59 from oracle@xxyyydg4 - ip_address -192.168.100.78 via the program - sqlplus@xxyyydg4 (TNS V1-V3)
[2020-04-29 09:04:44] Wed Apr 29 09:04:43 2020
[2020-04-29 09:04:44] 2020-04-29 09:04:43: failed login username - scott at 2020-04-29 09:04:43 from Administrator@WORKGROUP\BCPxxx - ip_address -192.168.xx.xx via the program - sqlplus.exe
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2689116/ ,如需转载,请注明出处,否则将追究法律责任。