某客户的一个Data Guard环境, 某个接口的数据库用户,登录时提示ORA-28000 account locked
首先尝试了alter system flush shared_pool, 无果
查询dba_users, 无论主备都显示account_status为OPEN
查了一堆文档,最终放出大招,将profiled的failed_login_attempts改成UNLIMITED,然后生产环境重新
alter user account unlock。之后,用户可以重新登录
但是这个是不符合安全设置规定,在主库创建了一个触发器
CREATE OR REPLACE TRIGGER sys.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);
v_username VARCHAR2(32);
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');
v_username := sys_context('userenv','authenticated_identity');
dbms_application_info.read_module(v_module, v_action);
message := to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') ||
' Password Erro: logon denied from ' || nvl(ip, 'localhost') || ' ' ||
v_pid || ' User:' || v_os_user || ' with ' || v_program || ' – ' ||
v_module || ' ' || v_action||' dbuser:' || v_username;
sys.dbms_system.ksdwrt(2, message);
END IF;
END;
/
然后备库的告警日志中果然出现了一大堆用户登录错误
Sat ar 22 14:55:09 2252025-03-22 14:55:69 Password Erro: logon denied from 100.100.100.100 54861 U5er-LOCAL SERVICE with JDBC Thin client "c JDBc Thin client dbUSer: testuser
最终定位到了应用端。
这个例子可能应该这么解释:
profile的failed_login_attempts在备库依然是生效的,客户端的错误密码登录,导致备库的用户被锁,但是因为备库只读,无法更新数据库更新用户状态, 导致在主库那边看到的account依然是OPEN
转载自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-3078485/ ,
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
