在工作中经常会碰到oracle用户被锁,不知道如何查看导致用户被锁的IP地址,可以通过创建触发器的方式进行查看:
1、触发器
通过sys用户登录数据库,创建如下触发器
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 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');
--v_module is much useful, "plsqldev.exe"
dbms_application_info.read_module(v_module, v_action);
message := to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')||' logon denied from '||nvl(ip, v_pid)
||' '||v_os_user||' with '||v_module||' '||v_action;
--write alert.log
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
2、通过alter.log日志查看结果
cd /u01/app/oracle/diag/rdbms/dldb/dldb/trace
vi alert.log
3、多数原因是因为密码不正确导致,修改用户密码即可