You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle用户expired(grace)状态时长及实际过期日期查询

Oracle用户Expired(Grace)状态相关问题解答

1. Expired(Grace)状态的持续时长

该状态的持续时间由用户所属PROFILE中的PASSWORD_GRACE_TIME参数决定,单位为天。比如参数设置为7,那么从密码过期当日起,用户拥有7天宽限期可登录系统;超出这个期限后,用户状态会变为EXPIRED,无法自行登录,必须由管理员解锁或重置密码。

若PASSWORD_GRACE_TIME设置为UNLIMITED,理论上用户会一直处于Expired(Grace)状态,但实际Oracle通常不允许这种配置(除非手动强制设置)。

2. 查询Expired(Grace)状态用户的实际过期日期

当用户处于Expired(Grace)状态时,dba_users表的expiry_date字段确实为空,此时需结合用户的PROFILE参数和密码变更时间计算最终过期日期,步骤如下:

步骤1:获取用户所属的PROFILE

执行SQL查询目标用户的PROFILE:

SELECT profile 
FROM dba_users 
WHERE username = '目标用户名'; -- 替换为实际用户名

步骤2:查询该PROFILE的密码生命周期和宽限期参数

执行SQL获取PROFILE中的PASSWORD_LIFE_TIME(密码有效期)和PASSWORD_GRACE_TIME(宽限期):

SELECT resource_name, limit 
FROM dba_profiles 
WHERE profile = '步骤1获取的PROFILE名称'
AND resource_name IN ('PASSWORD_LIFE_TIME', 'PASSWORD_GRACE_TIME');

步骤3:计算最终过期日期

最终过期日期 = 密码最后变更日期 + 密码有效期 + 宽限期,用SQL直接计算的写法:

SELECT 
  u.username,
  u.last_change_date + INTERVAL '1' DAY * TO_NUMBER(p1.limit) + INTERVAL '1' DAY * TO_NUMBER(p2.limit) AS final_expiry_date
FROM 
  dba_users u,
  dba_profiles p1,
  dba_profiles p2
WHERE 
  u.username = '目标用户名'
  AND u.profile = p1.profile
  AND p1.resource_name = 'PASSWORD_LIFE_TIME'
  AND u.profile = p2.profile
  AND p2.resource_name = 'PASSWORD_GRACE_TIME';

注意:如果PASSWORD_LIFE_TIME设置为UNLIMITED,用户不会进入Expired(Grace)状态,上述查询仅适用于配置了有限密码有效期的场景。

内容的提问来源于stack exchange,提问作者Ananthu rajeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:50:33