更改Oracle用户密码失效日期

rdj*_*dj7 5 database oracle

我有使用的oracle用户密码有效期,

Select Expiry_date from USER_USERS;

我想在密码即将到期时发出警告消息。

目前,我的密码是不是即将到期。我想将过期日期更改为以前的日期,以便可以测试我的代码。

我的用户帐户密码应该是即将到期。即我想要得到ORA-28002错误。

我尝试使用 alter user XYZ password expire;

这将我的用户设置ACCOUNT_STATUSEXPIRED状态,但是我希望它处于EXPIRED(GRACE)状态。

请提出任何可能的方法。

Wer*_*eit 4

您必须创建一个新的用户配置文件(或更改现有的用户配置文件),如下所示:

CREATE PROFILE SHORT_LIFE_PROFILE LIMIT
    PASSWORD_LIFE_TIME 1/24/60/60 --> = 1 second
    PASSWORD_GRACE_TIME 1/24; --> = 1 hour

ALTER USER rdj7 PROFILE SHORT_LIFE_PROFILE;
Run Code Online (Sandbox Code Playgroud)

为了获得ACCOUNT_STATUS = EXPIRED(GRACE)您必须使用该用户登录,否则状态不会改变。

C:\>sqlplus rdj7/*****@yourDB

SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 10 10:09:29 2017

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-28002: the password will expire within 0 days

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning option

SQL>
Run Code Online (Sandbox Code Playgroud)

然后你应该看到它:

SELECT ACCOUNT_STATUS 
FROM DBA_USERS 
WHERE USERNAME = 'RDJ7';

ACCOUNT_STATUS                  
--------------------------------
EXPIRED(GRACE)     

1 row selected.
Run Code Online (Sandbox Code Playgroud)

  • 典型的 Oracle,让我们用复杂的方式来做。Oracle 这样做有什么原因吗? (2认同)