ORA-28002: the password will expire within 7 days

ORA-28002: the password will expire within 7 days

异常原因:提示密码将在七天内过期。

解决方法:已经被报告了该异常的账户必须修改一次密码(需要DBA权限),通过 sqlplus / as sysdba登陆到 Oracle (无需密码),然后执行如下命令更新密码即可:

C:\Users\Mechrevo>sqlplus / as sysdba Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> alter user username identified by newpassword; 用户已更改。

修改密码过期的默认设置

在Oracle中,每个用户都会对应一种特定类型的profile概要设置,其基本描述了这个用户的一些特征,就比如用户密码的生命周期(这个特征与ORA-28002异常有关)。

通常数据库用户都会采用default这个默认的profile概要设置,如下所示:

SQL> select t.username, t.profile from dba_users t; USERNAME PROFILE ------------------------------ ------------------------------ USERNAME_DEV DEFAULT SYSTEM DEFAULT SYS DEFAULT MGMT_VIEW DEFAULT SYSMAN DEFAULT DBSNMP MONITORING_PROFILE SPATIAL_WFS_ADMIN_USR DEFAULT SPATIAL_CSW_ADMIN_USR DEFAULT HR DEFAULT APEX_PUBLIC_USER DEFAULT OE DEFAULT

查看系统profiles中password_life_time: 密码生命周期,用户密码什么时候到期,单位是天,如下,安装 Oracle 时默认的password_life_time是180天,即6个月,其含义就是,我们的用户密码每6个月就需要更新(注意: 这里的更新不是指密码需要改变,而是指一个更新动作,可以维持密码不变,但必须执行这个更新动作)。

SQL> select s.* 2 from dba_profiles s 3 where s.profile = 'DEFAULT' 4 and s.resource_name = 'PASSWORD_LIFE_TIME'; PROFILE RESOURCE_NAME RESOURCE ------------------------------ -------------------------------- -------- LIMIT ---------------------------------------- DEFAULT PASSWORD_LIFE_TIME PASSWORD 180

修改dba_profiles中password_life_time的设置,改为unlimited。即不限制,这样我们的用户密码就永不过期了。

SQL> alter profile default limit password_life_time unlimited; 配置文件已更改