如何在Oracle DB 21c XE上的Apex 19.2中永久保持匿名用户账户解锁?
解决Oracle 21c XE中ANONYMOUS账户反复锁定的问题
1. 先排查账户锁定的根本原因
多数情况是多次失败的登录尝试触发自动锁定,先通过查询定位原因:
- 查询账户状态及关联配置:
SELECT username, account_status, lock_date, expiry_date, profile FROM dba_users WHERE username = 'ANONYMOUS'; - 查询失败登录记录(定位发起错误请求的来源):
注:SELECT timestamp, username, action_name, returncode, client_id, terminal FROM dba_audit_trail WHERE username = 'ANONYMOUS' AND action_name = 'LOGON' ORDER BY timestamp DESC;returncode = 1017代表登录密码错误,结合client_id或terminal可找到发起错误登录的应用/服务。
2. 调整账户安全策略,避免自动锁定
针对21c XE默认的安全限制,修改配置让ANONYMOUS账户保持解锁状态:
- 解锁账户:
ALTER USER ANONYMOUS ACCOUNT UNLOCK; - 取消登录失败次数限制:
若ANONYMOUS使用默认配置文件,执行:
若使用自定义配置文件,替换ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;DEFAULT为对应配置文件名即可。 - 设置账户密码永不过期:
ALTER USER ANONYMOUS PASSWORD EXPIRE UNLIMITED;
3. 修复错误登录源
如果查询到持续的失败登录尝试,需:
- 检查Apex 19.2的配置,确认是否有组件错误使用ANONYMOUS账户的旧密码(21c升级后密码可能被重置)。
- 排查服务器上的其他应用、脚本或定时任务,是否存在硬编码ANONYMOUS账户信息的情况,更新为正确配置。
4. 排除自动维护任务的影响
Oracle 21c可能存在自动锁定闲置账户的调度任务,检查并调整:
SELECT job_name, enabled, program_name FROM dba_scheduler_jobs WHERE job_name LIKE '%LOCK%USER%';
如果存在启用的锁定任务,修改任务规则,将ANONYMOUS账户排除在锁定逻辑之外。
内容的提问来源于stack exchange,提问作者lui862
相关产品推荐
相关产品推荐

