问题呈现
好几个月没有用Orcal了,今天晚上突然想登录玩一下,但是发现密码过期了:
执行请求的操作时遇到错误: 0RA-28001:the password has expired 28001.00000-"the password has expired" *Cause:The user's account has expired and the password needs to be changed *Action:change the password or contact the DBA 供商代码28001
问题原因
Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。 Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个默认的功能很容易被DBA或者是开发人员给疏忽,一旦密码180天未修改过,就会出现这样的问题。
解決办法
1.运行cmd;
2.使用 sqlplus / as sysdba命令,进入oracle数据库;
3.使用下面的语句查看密码的有效天数为180天,也就是三个月:
select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
4.如果想去除180天的密码生存周期的限制可通过如下SQL语句将其关闭
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
5.进行以上步骤之后需要改变密码,否则还会出现password has expired异常, 注意,这里所谓的更改,可以和原来密码一样....
ALTER USER 用户名 IDENTIFIED BY 密码 ;
例如:
ALTER USER gdnh IDENTIFIED BY admin123;
6.至此问题解决;