一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何取消Oracle用户密码过期限制

时间:2026-08-18 09:32:49 编辑:袖梨 来源:一聚教程网

直接修改DEFAULT profile的PASSWORD_LIFE_TIME为UNLIMITED即可取消密码过期限制,无需重启数据库;但已过期用户仍需执行ALTER USER重置密码才能恢复登录,因策略变更不回溯生效。

直接改 DEFAULT profile 的 PASSWORD_LIFE_TIMEUNLIMITED 就行,不用重启数据库,但已过期的用户仍需重置密码才能登录。

怎么查当前密码有效期设置

先确认你用的是哪个 profile(99% 是 DEFAULT),再查它的 PASSWORD_LIFE_TIME 值:

  1. 查用户绑定的 profile:SELECT username, profile FROM dba_users WHERE username = 'YOUR_USERNAME';
  2. 查该 profile 的密码有效期:SELECT resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME';

如果返回 180,就是默认 180 天;如果为空,Oracle 会按内部默认值(仍是 180)处理。

怎么取消全局密码过期限制

syssystemSYSDBA 权限登录后执行:

  1. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
  2. 顺手把宽限期也关掉,避免 ORA-28002 提醒:ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;

执行完显示 Profile altered. 即生效。注意:这个操作只影响后续新设或重置的密码,对已过期的用户无效。

已过期用户怎么恢复登录

即使策略改了,ACCOUNT_STATUSEXPIREDEXPIRED(GRACE) 的用户仍无法登录,必须显式重置密码:

  1. 查哪些用户已过期:SELECT username, account_status, expiry_date FROM dba_users WHERE account_status LIKE 'EXPIRED%';
  2. 重置密码(可保留原密码):ALTER USER username IDENTIFIED BY "原密码";(双引号仅在密码含特殊字符或大小写混合时必需)
  3. 如果账户还被锁了:ALTER USER username ACCOUNT UNLOCK;

重置后 expiry_date 会自动更新为 NULL 或远期时间,状态变回 OPEN

为什么改了 profile 还登不上

这是最常踩的坑:以为改了 PASSWORD_LIFE_TIME 就万事大吉,其实 Oracle 不会 retroactively 刷新已有密码的过期计时器。哪怕刚改完 profile,只要用户上次设密码是 181 天前,且没重置过,状态仍是 EXPIRED。必须执行 ALTER USER ... IDENTIFIED BY 才能重置倒计时起点——哪怕新密码和旧的一模一样。

热门栏目