ITPub博客

首页 > 数据库 > Oracle > ORACLE账户提示EXPIRED(GRACE)问题解决

ORACLE账户提示EXPIRED(GRACE)问题解决

Oracle 作者:记录每一次错误 时间:2018-10-16 11:26:51 0 删除 编辑

最近一个奇怪现象为账户为EXPIRED(GRACE),查阅资料得知这是oracle11g安全的一个更新,类似系统账号过期一样。

1)查询用户状态为

col username for a20 

col account_status for a20

SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;


USERNAME                         ACCOUNT_STATUS             LOCK_DATE            EXPIRY_DATE

-------------------- -------------------- -------------- --------------

CBD                                EXPIRED(GRACE)                                            04-2月 -13

1)查询表dba_profiles

SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME LIKE 'PASSWORD%';


PROFILE                            RESOURCE_NAME                                        RESOURCE LIMIT

-------------------- -------------------------------- -------- ----------------------------------------

DEFAULT                            PASSWORD_LIFE_TIME                             PASSWORD 180

DEFAULT                            PASSWORD_REUSE_TIME                            PASSWORD UNLIMITED

DEFAULT                            PASSWORD_REUSE_MAX                             PASSWORD UNLIMITED

DEFAULT                            PASSWORD_VERIFY_FUNCTION                 PASSWORD NULL

DEFAULT                            PASSWORD_LOCK_TIME                             PASSWORD 1

DEFAULT                            PASSWORD_GRACE_TIME                            PASSWORD 7


6 rows selected.


SQL>

解释如下:

FAILED_LOGIN_ATTEMPTS 整数设定登录到Oracle 数据库时可以失败的次数。一旦某用户尝试登录数据库的达到该值时,该用户的帐户就被锁定,只能由DBA能解锁。

PASSWORD_LIFE_TIME        设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为UNLIMITED.

PASSWORD_REUSE_TIME     许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.

PASSWORD_REUSE_MAX        重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。

PASSWORD_LOCK_TIME        设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。

PASSWORD_GRACE_TIME     设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。                        

PASSWORD_VERITY_FUNCTION 该资源项允许调用一个PL/SQL 来验证口令。Oracle公司已提供该应用 的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.

2)默认有效期为180天

SQL> select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';


PROFILE                                                        RESOURCE_NAME                                                                                RESOURCE LIMIT

-------------------- -------------------------------- -------- ----------------------------------------

DEFAULT                                                        PASSWORD_LIFE_TIME                                                         PASSWORD 180


SQL>

2)默认宽限时间为7天

SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_GRACE_TIME';


PROFILE                            RESOURCE_NAME                RESOURCE_TYPE        LIMIT

-------------------- -------------------- ---------------- --------------------

DEFAULT                            PASSWORD_GRACE_TIME    PASSWORD                 7

SQL>

3)修改默认有效期天数为无限

SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;


用户已更改。

SQL>

4)修改默认宽限期限

SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;

用户已更改。

SQL>

5)修改用户密码为原来密码(假设当前密码为CBD_abc)

SQL>ALTER USER CBS IDENTIFIED BY CBD_123;


用户已更改。

SQL>

6)查看用户当期那状态

SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;


USERNAME                         ACCOUNT_STATUS             LOCK_DATE            EXPIRY_DATE

-------------------- -------------------- -------------- --------------

cbd                                    OPEN


SQL>

到此,账户过期问题解决。

关于账号状态问题补充

1)查询用户概要文件情况

SQL> SELECT username,PROFILE FROM dba_users where username like 'CBD%';


USERNAME                                    PROFILE

------------------------- --------------------

    CBD                                         DEFAULT


SQL>

2)账号有多少中状态?

SQL> select * from user_astatus_map;


     STATUS# STATUS

---------- ----------------------------------------------------------------

                 0 OPEN

                 1 EXPIRED

                 2 EXPIRED(GRACE)

                 4 LOCKED(TIMED)

                 8 LOCKED

                 5 EXPIRED & LOCKED(TIMED)

                 6 EXPIRED(GRACE) & LOCKED(TIMED)

                 9 EXPIRED & LOCKED

                10 EXPIRED(GRACE) & LOCKED

10类状态说明:

五种基本状态可分为三类:

正常状态;

锁定状态;

密码过期状态。

1、OPEN状态表示用户处于正常状态。

2、LOCKED和LOCKED(TIMED)表示用户被锁定状态。有如下两种情况:

DBA显式的通过SQL语句对用户进行锁定;

被动的锁定,默认情况下如果密码输入错误超过10次锁定;

该限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可查看视图DBA_PROFILES。

DBA显式锁定用户LOCKED

  alter user [username] account lock;

输入10次错误密码后被动锁定LOCKED(TIMED)

  这个限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,该信息可以通过DBA_PROFILES视图查询


3、EXPIRED和EXPIRED(GRACE)表示用户密码过期状态。

  修改PROFILE中的PASSWORD_LIFE_TIME实现密码是否过期

    alter profile default limit password_life_time unlimited;

  密码过期后也可修改PROFILE中的PASSWORD_GRACE_TIME控制使用的天数:

    alter profile default limit password_grece_time 180;

  对于密码过期的用户OPEN:a

    alter user [username] identified by <password> account unlock;


推荐帖子:

http://blog.csdn.net/kai27ks/article/details/6270350

http://hi.baidu.com/nonyi_com/item/f29f10720eae1c41ee1e534a

--------------------- 

作者:Onlineforeve 

来源:CSDN 

原文:https://blog.csdn.net/jackenjun/article/details/8901955?utm_source=copy 

版权声明:本文为博主原创文章,转载请附上博文链接!


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31547066/viewspace-2216512/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
性格开朗,有较强的学习能力,对oracle数据库的体系结构,搭建RAC,timesten,goldengate,分布式数据库,dataguard,系统调优有较深入的了解, 尤其是oracle优化,深入学习的主机命令,对数据库的优化,SQL语句的优化有深入的认识,目前正在shell脚本,mysql,以后会有计划学习大数据和python。

注册时间:2018-07-23

  • 博文量
    200
  • 访问量
    475047