Oracle 19c中密码永不过期须通过PROFILE实现:先查用户绑定的PROFILE及对应PASSWORD_LIFE_TIME值,再修改DEFAULT或新建PROFILE并分配;已过期用户必须用SYSDBA执行ALTER USER...REPLACE重置计时器。
oracle 19c 中无法对单个用户直接设置密码永不过期,必须通过 profile 控制;default profile 默认启用 password_life_time = 180,改它最直接,但会影响所有未显式指定 profile 的用户。
查清当前用户绑定的 PROFILE 和实际策略
很多人执行了 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED 却发现某个用户仍报 ORA-28001: the password has expired,根本原因是该用户绑定了其他 PROFILE(比如 APP_PROFILE),而非 DEFAULT。
务必分两步确认:
-
SELECT username, profile FROM dba_users WHERE username = 'SCOTT';—— 看用户实际用的是哪个 PROFILE -
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'YOUR_PROFILE_NAME' AND resource_type = 'PASSWORD';—— 查该 PROFILE 下PASSWORD_LIFE_TIME真实值
注意:dba_profiles 中若查不到某项(如 PASSWORD_LIFE_TIME),说明该 PROFILE 未显式设置,会继承系统默认值(通常是 180)。
修改 DEFAULT PROFILE 实现全局永不过期
这是生产环境最常用、最省事的做法,适用于“所有用户都可接受密码永不过期”的场景。
执行命令即可:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
关键点:
🎯 HR面试评价助手(Word版格式) 生成可直接复制到Word文档的标准格式HR面试评价 【使用方式】 1. 发送口令:HR面试评价 2. 粘贴JD文字 3. 上传简历文档 4. 上传面试记录(可选) 5. 复制生成的评价到Word 【输出特点】 - 纯文本格式,可直接粘贴到Word - 层次清晰,标题加粗...
-
UNLIMITED不加引号,写成'UNLIMITED'会报ORA-00922 - 立即生效,无需重启实例或重连客户端
- 新创建的用户自动继承该策略
- 已有用户不会自动刷新
expiry_date字段——哪怕策略已改,只要没改密,expiry_date仍停留在原过期时间
为单个用户新建 PROFILE 避免影响他人
当只有 SCOTT、VPXADMIN 等少数运维账号需永不过期,而业务账号仍要保留 90 天轮换策略时,必须新建 PROFILE。
操作三步走:
- 创建空 PROFILE:
CREATE PROFILE no_expire_profile LIMIT PASSWORD_LIFE_TIME UNLIMITED; - 分配给用户:
ALTER USER scott PROFILE no_expire_profile; - 验证生效:
SELECT expiry_date FROM dba_users WHERE username = 'SCOTT';—— 若返回NULL或远期时间(如4000-01-01),说明策略已应用
注意:已有用户的 expiry_date 不会因 PROFILE 切换而重算。若该用户已过期,仍需执行 ALTER USER scott IDENTIFIED BY <current_password> REPLACE <current_password> 才能重置计时起点。
已有过期用户必须手动重置密码才能登录
这是最容易被忽略的一环。无论你把 PASSWORD_LIFE_TIME 改成 UNLIMITED 还是新建 PROFILE,只要用户状态已是 EXPIRED(GRACE) 或 EXPIRED,就无法登录,ORA-28001 会持续出现。
解决方法只有一条:
- 用
SYSDBA登录后执行:ALTER USER username IDENTIFIED BY <same_password> REPLACE <same_password>
这个语句不改变密码本身,仅重置密码生命周期计时器,让 expiry_date 按当前 PROFILE 重新计算。如果用户已被锁(LOCKED(TIMED)),还需加 ACCOUNT UNLOCK。

















