更改Oracle用户密码到期日期。

6

我使用以下命令获得了Oracle用户密码过期日期:

Select Expiry_date from USER_USERS;

当密码即将过期时,我想弹出警告消息。

目前我的密码不会很快过期。我想把到期日期改为之前的日期,以便测试我的代码。

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

我尝试使用以下命令:

alter user XYZ password expire;

这将使我的用户 ACCOUNT_STATUS 状态变为 EXPIRED,但是我希望它处于 EXPIRED(GRACE) 状态。

请建议任何可能的方法。


可能是设置Oracle用户密码到期/宽限期的重复问题。 - Anil
更改附加到此用户的配置文件。您可以将PASSWORD_LIFE_TIME设置为较短的值(甚至可以到秒)。 - Wernfried Domscheit
我已经完成了,但它没有进入“EXPIRED(GRACE)”状态 @WernfriedDomscheit - rdj7
你以这个用户身份登录了吗?否则状态将不会更新。 - Wernfried Domscheit
1个回答

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;

为了获取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>

然后你应该能看到它:

SELECT ACCOUNT_STATUS 
FROM DBA_USERS 
WHERE USERNAME = 'RDJ7';

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

1 row selected.

2
典型的Oracle,让我们用复杂的方式来做。Oracle为什么要这样做?有什么理由吗? - Paul McCarthy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接