Oracle get login IP

建表:
create table IP登录记录表
(
  a VARCHAR2(4000)
);                                      

------------------------------------
                               
CREATE OR REPLACE TRIGGER logon_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; END IF;   (message); VALUES   (a)



INSERT INTO ip login record table









END;
         

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326571236&siteId=291194637