Oracle11g 密码过期问题

4 oracle oracle-11g

我有一个用户在 oracle db 中有一个默认配置文件。我想重现以下警告错误:ORA-28002:密码将在 X 天内过期

在 dba_profile 中,我设置了以下值。

FAILED_LOGIN_ATTEMPTS            PASSWORD 10
PASSWORD_LIFE_TIME               PASSWORD 1
PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
PASSWORD_REUSE_MAX               PASSWORD 1
PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
PASSWORD_LOCK_TIME               PASSWORD 1
PASSWORD_GRACE_TIME              PASSWORD 1
Run Code Online (Sandbox Code Playgroud)

但是,通过使用上述值,我可以为系统用户生成 ORA-28002 错误。但对于 CUSUSER 用户,它不会给出此错误。

当我查看 dba_users 表时,它显示以下值。

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
CUSUSER                        OPEN
SYSTEM                         EXPIRED(GRACE)
Run Code Online (Sandbox Code Playgroud)

我无法将 CUSUSER 的 account_status 更新为 EXPIRED(GRACE)

请任何人让我知道我将如何为 CUSUSER 重现此错误。

Joh*_*yle 5

根据此处的 Oracle 文档(请参阅标题将 PASSWORD_LIFE_TIME 配置文件参数设置为低值),当您更改为低值时OPENEXPIRED(GRACE)如果用户当前已登录,则帐户状态将从更改PASSWORD_LIFE_TIME为 。我猜您在更改PASSWORD_LIFE_TIME. 尝试以 CUSUSER 身份登录,然后更改它。

以下方法会将用户的帐户状态设置为 EXPIRED(GRACE):

create profile EXPTESTPROF limit
failed_login_attempts             1
password_life_time                1/24/60/60
password_reuse_time               unlimited
password_reuse_max                1
password_verify_function          null
password_lock_time                1
password_grace_time               1;

create user EXPTEST identified by EXPTEST;

alter user EXPTEST profile EXPTESTPROF;

grant "CONNECT" to EXPTEST;
Run Code Online (Sandbox Code Playgroud)

然后以 EXPTEST 身份登录。您将收到密码将在 1 天内过期的消息。如果您现在检查 ACCOUNT_STATUS,它应该显示 EXPIRED(GRACE):

select ACCOUNT_STATUS
  from DBA_USERS
 where USERNAME = 'EXPTEST'
Run Code Online (Sandbox Code Playgroud)