最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何取消Oracle用户密码过期限制
时间:2026-08-18 09:32:49 编辑:袖梨 来源:一聚教程网
直接修改DEFAULT profile的PASSWORD_LIFE_TIME为UNLIMITED即可取消密码过期限制,无需重启数据库;但已过期用户仍需执行ALTER USER重置密码才能恢复登录,因策略变更不回溯生效。
直接改 DEFAULT profile 的 PASSWORD_LIFE_TIME 为 UNLIMITED 就行,不用重启数据库,但已过期的用户仍需重置密码才能登录。
怎么查当前密码有效期设置
先确认你用的是哪个 profile(99% 是 DEFAULT),再查它的 PASSWORD_LIFE_TIME 值:
- 查用户绑定的 profile:
SELECT username, profile FROM dba_users WHERE username = 'YOUR_USERNAME'; - 查该 profile 的密码有效期:
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME';
如果返回 180,就是默认 180 天;如果为空,Oracle 会按内部默认值(仍是 180)处理。
怎么取消全局密码过期限制
用 sys 或 system 以 SYSDBA 权限登录后执行:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;- 顺手把宽限期也关掉,避免 ORA-28002 提醒:
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
执行完显示 Profile altered. 即生效。注意:这个操作只影响后续新设或重置的密码,对已过期的用户无效。
已过期用户怎么恢复登录
即使策略改了,ACCOUNT_STATUS 是 EXPIRED 或 EXPIRED(GRACE) 的用户仍无法登录,必须显式重置密码:
- 查哪些用户已过期:
SELECT username, account_status, expiry_date FROM dba_users WHERE account_status LIKE 'EXPIRED%'; - 重置密码(可保留原密码):
ALTER USER username IDENTIFIED BY "原密码";(双引号仅在密码含特殊字符或大小写混合时必需) - 如果账户还被锁了:
ALTER USER username ACCOUNT UNLOCK;
重置后 expiry_date 会自动更新为 NULL 或远期时间,状态变回 OPEN。
为什么改了 profile 还登不上
这是最常踩的坑:以为改了 PASSWORD_LIFE_TIME 就万事大吉,其实 Oracle 不会 retroactively 刷新已有密码的过期计时器。哪怕刚改完 profile,只要用户上次设密码是 181 天前,且没重置过,状态仍是 EXPIRED。必须执行 ALTER USER ... IDENTIFIED BY 才能重置倒计时起点——哪怕新密码和旧的一模一样。