oracle 11g中default profile默认密码过期(180天),需显式设unlimited并手动解锁已过期用户,且failed_login_attempts锁定需单独处理。

Oracle 11g 中 DEFAULT profile 默认就是密码过期的(180 天),不存在“默认不过期”的 Profile;所谓“安全设置”,本质是显式关闭过期机制 + 补救已过期状态,而不是启用某个隐藏的“安全默认值”。
查清当前用户绑定的是哪个 PROFILE
不能假设用户用的是 DEFAULT,必须查实:
SELECT username, profile FROM dba_users WHERE username = 'YOUR_USER';
常见错误:返回空行 → 用户不存在,或你当前连接账号无 DBA 权限;此时需换 SYS 或有 SELECT_CATALOG_ROLE 的账号重试。如果确认用户存在但 profile 字段为空,说明该用户被创建时显式指定了 NO PROFILE(极少见),需单独处理。
修改 PASSWORD_LIFE_TIME 为 UNLIMITED 的实操要点
找到 profile 名(比如 DEFAULT)后执行:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
注意以下几点:
-
PASSWORD_LIFE_TIME必须全大写,小写或混合大小写(如password_life_time)会报ORA-02379: profile limit does not exist - 该语句只影响未来密码生命周期,对已处于
EXPIRED或EXPIRED(GRACE)状态的用户完全无效 - 若 profile 被多个用户共用(如所有应用用户都用
DEFAULT),此操作会批量生效,不是单用户隔离操作 - 执行后必须验证:
SELECT limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME';
结果应为UNLIMITED;若仍是数字(如180),说明语句未执行成功,或当前用户缺少ALTER PROFILE权限
已过期用户必须手动解锁+重置密码
这是最常漏掉的关键步骤。Profile 修改后,Oracle 不会自动刷新已过期用户的内部状态。只要用户当前状态是 EXPIRED,下次登录仍会直接拒绝,根本不会读取新的 PASSWORD_LIFE_TIME 设置。
必须执行:
ALTER USER your_user IDENTIFIED BY <strong>same_password_as_before</strong> ACCOUNT UNLOCK;
或者更推荐用新密码:
ALTER USER your_user IDENTIFIED BY new_secure_password ACCOUNT UNLOCK;
说明:
- 使用
IDENTIFIED BY VALUES强制设哈希值会跳过全部密码策略校验,包括历史检查和复杂度,不建议用于此场景 - 即使想保留原密码,也必须走
IDENTIFIED BY流程,否则 Oracle 不会更新用户密码时间戳和状态字段 - 执行后可查
dba_users.expiry_date是否变为NULL或远期时间,确认状态已重置
别忽略 FAILED_LOGIN_ATTEMPTS 导致的连锁锁定
很多“密码过期”报错实际是 ORA-28000: the account is locked,根源常是 FAILED_LOGIN_ATTEMPTS 触发的账户锁定,而非 PASSWORD_LIFE_TIME。
检查方式:
SELECT limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'FAILED_LOGIN_ATTEMPTS';
若返回 10(默认值),且用户近期输错密码多次,就需同步处理:
- 先解锁账户:
ALTER USER your_user ACCOUNT UNLOCK;
- 再考虑是否放宽限制:
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
(生产环境慎用,建议设为合理值如5或配合PASSWORD_LOCK_TIME) - 注意:
FAILED_LOGIN_ATTEMPTS和PASSWORD_LIFE_TIME是两个独立开关,改一个不解决另一个的问题
真正安全的设置不是追求“无限”,而是明确知道每个参数在做什么、谁在用、改了会影响谁——Profile 是共享策略,不是用户私有配置,任何修改都要先看绑定范围,再动手。











