重庆思庄Oracle、Redhat认证学习论坛

标题: dba如何直接解决ORA-28002的问题 [打印本页]

作者: 郑全    时间: 2014-1-9 18:21
标题: dba如何直接解决ORA-28002的问题
问题:
   登陆,就报口令还有7天就到期了,由于用户太多,有上1000个,能否不修改口令,通过dba统一修改?

 

作者: 郑全    时间: 2014-1-9 18:23
下面模拟一下场景:

作者: 郑全    时间: 2014-1-9 18:25
标题: 1.先确定一下环境:
1.先确定一下环境:
   db版本: 
  SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

  日期时间:

[oracle@dbserver ~]$ date
Thu Jan  9 18:03:39 CST 2014

    口令到期时间:

    SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';

RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               180
 

用户状态:
   SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
HR                             OPEN                             08-JUL-14

通过以上,我们看到目前hr用户的到期时间为 2014-7-08号
SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_GRACE_TIME';

RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_GRACE_TIME              7



作者: 郑全    时间: 2014-1-9 18:25
接下来,我们修改操作系统时间为7月9号
作者: 郑全    时间: 2014-1-9 18:27
标题: 2.修改操作系统时间为7月9号

2.修改操作系统时间为7月9号
   [root@dbserver ~]# date -s '2014-07-09 18:09'
Wed Jul  9 18:09:00 CST 2014
[root@dbserver ~]# date
Wed Jul  9 18:09:01 CST 2014
[root@dbserver ~]#

 

 


作者: 郑全    时间: 2014-1-9 18:27
现在看看hr的状态
    [oracle@dbserver ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 9 18:10:02 2014

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

SQL> connect / as sysdba
Connected.
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
HR                             OPEN                             08-JUL-14

SQL> 
大家看到 hr的到期时间还为 08-jul-14

作者: 郑全    时间: 2014-1-9 21:34
标题: 3.登陆hr
3.登陆hr
    SQL> conn hr/hr
ERROR:
ORA-28002: the password will expire within 7 days


Connected.
SQL> 
一登陆,就提示还有7天就过期
  看看状态
SQL> conn / as sysdba
Connected.
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
HR                             EXPIRED(GRACE)                   16-JUL-14

SQL> 

作者: 郑全    时间: 2014-1-9 21:34
可以看到,这个account状态,只有在登陆时,才会变化.不登陆,就不会变化.
作者: 郑全    时间: 2014-1-9 21:35

大家看到,hr的用户的状态已经变成 expired(grace)状态了

在7天以内hr登陆,都会提示这个 ora-28002的提示,不影响使用,但到 16-JUL-14 后,如果口令还不到期,这个用户就要被锁定


  那现在修改 PASSWORD_LIFE_TIME 为无限制,是否会解决这个问题呢

作者: 郑全    时间: 2014-1-9 21:36
王利军(361501283)  18:16:36
那为何最后日期是16不是15,因为当前日期为9号么,那如果当前是10号登录的呢?

作者: 郑全    时间: 2014-1-9 21:37
标题: 4.修改 PASSWORD_LIFE_TIME 为无限制
4.修改 PASSWORD_LIFE_TIME 为无限制

  SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';

RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               180

SQL> alter profile default
  2     limit PASSWORD_LIFE_TIME unlimited;

Profile altered.

SQL> select resource_name,limit from dba_profiles where profile='DEFAULT' and RESOURCE_NAME='PASSWORD_LIFE_TIME';

RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               UNLIMITED

SQL> 
问得好,这个问题留给你去试验了

作者: 郑全    时间: 2014-1-9 21:38
 口令到期已经修改为无限制了,再去看看hr用户的状态
SQL> select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users where username='HR';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
HR                             EXPIRED(GRACE)                   16-JUL-14

SQL> 
还是 EXPIRED(GRACE)


再登陆,依然报这个错误:

SQL> conn hr/hr
ERROR:
ORA-28002: the password will expire within 7 days


Connected.
SQL> 

作者: 郑全    时间: 2014-1-9 21:38
当然,如果修改这个用户的密码为原来的密码,问题马上就可以解决
  问题是,现在有1000个用户,都让他们去修改,老板不愿意,老板说,既然都不要口令有效期了,还修改密码干吗
dba直接处理得了



dba需要拿这1000个用户去修改一次密码吗


  问题就留在这里,各位有什么好的解决办法?





欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2