捕捉嘗試登錄失敗的用戶信息 2010-02-23 08:47:32
分類: Linux
最近一個應用的用戶被鎖,查了一下發如今profile裏設置了100次嘗試登錄的限制,爲了定位具體嘗試登錄的時間及ip等相關信息,須要寫一個trigger進行捕捉,如下來自網上:
create or replace trigger logon_denied_to_alert
after servererror on database
declare
message varchar2(120);
IP varchar2(15);
v_os_user varchar2(80);
v_module varchar2(50);
v_action varchar2(50);
v_pid varchar2(10);
v_sid number;
begin
IF (ora_is_servererror(1017)) THEN
if sys_context('userenv', 'network_protocol') = 'tcp' then
IP := sys_context('userenv', 'ip_address');
else
select distinct sid into v_sid from sys.v_$mystat;
SELECT p.SPID
into v_pid
FROM V$PROCESS p, V$SESSION v
WHERE p.ADDR = v.PADDR
AND v.sid = v_sid;
end if;
v_os_user := sys_context('userenv', 'os_user');
dbms_application_info.READ_MODULE(v_module, v_action);
message := to_char(sysdate, 'Dy Mon dd HH24:MI:SS YYYY') ||
' logon denied from ' || nvl(IP, v_pid) || ' ' || v_os_user ||
' with ' || v_module || ' ' || v_action;
sys.dbms_system.ksdwrt(2, message);
end if;
end;
/
當有用戶嘗試登錄失敗後,alert日誌裏記錄了以下信息:
Mon Feb 22 03:50:13 2010 logon denied from 192.168.80.19 oracle with sqlplus@node1 (TNS V1-V3)
該trigger只是記錄登錄失敗的信息,正常成功登錄不會記錄。node