password_grace_time是密码生命周期到期后允许用户登录并修改密码的宽限期,与登录失败无关;它不是锁定时间,而是过期后可继续登录(但限制写操作)的天数,需通过alter profile配置,不支持alter user直接设置。

什么是 PASSWORD_GRACE_TIME,它和登录失败没关系
PASSWORD_GRACE_TIME 不是账户锁定时间,也不是登录失败重试限制;它是密码生命周期(PASSWORD_LIFE_TIME)到期后,允许用户以只读方式登录并修改密码的窗口期。这个阶段用户仍能连上数据库,但执行 DML 或 DDL 会直接报 ORA-28002(“the password will expire within N days”),且无法提交任何写操作。
设置 PASSWORD_GRACE_TIME 的典型命令和常见错误
修改宽限期必须通过 ALTER PROFILE,不能对单个用户直接设——Oracle 不支持 per-user 密码策略,只支持 profile 级别配置:
- 想把宽限期设为 7 天:
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME 7; - 想彻底禁用宽限期(过期即锁):
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME 0; - 想取消宽限期提示、让过期后完全无法登录:
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME 0;(不是UNLIMITED,该值对PASSWORD_GRACE_TIME无效) - 错误写法:
ALTER USER scott PASSWORD_GRACE_TIME 5;→ 语法错误,Oracle 不识别该语句
为什么改了 PROFILE,有些用户还是没生效
关键点在于用户是否实际关联了你修改的 profile:
将 LaTeX(.tex)学术论文转换为 Word(.docx),支持可编辑的 OMML 公式、原生 Word 表格、嵌入图形、IEEE 双栏排版及参考文献
- 新用户默认用
DEFAULTprofile,所以改DEFAULT通常立即影响后续新建用户 - 已有用户若显式指定了其他 profile(如
CREATE USER u1 PROFILE app_profile;),则改DEFAULT对其无效 - 检查用户当前 profile:
SELECT username, profile FROM dba_users WHERE username = 'SCOTT'; - 强制切换 profile:
ALTER USER scott PROFILE DEFAULT;
宽限期为 0 时的真实行为要注意
设 PASSWORD_GRACE_TIME 0 并不等于“立刻锁账号”,而是:一旦 PASSWORD_LIFE_TIME 到期,下一次连接就会直接拒绝登录,并报 ORA-28001: the password has expired。此时用户无法执行任何语句,包括 ALTER USER ... IDENTIFIED BY —— 必须由 DBA 重置密码或临时解锁。
真正容易被忽略的是:宽限期归零后,应用连接池里的旧连接可能还在复用,直到下次建新连接才暴露问题。所以调整前最好同步通知应用侧做连接重建。










