错误解决方案: ORA-28001: 密码已过期
背景
一个JAVA程序抛出了一个错误 ” java.sql.SQLException: ORA-28001: 密码已过期 ” 当程序运行时.
此错误是由某个帐户的密码过期引起的. 因此,由于安全原因,oracle系统锁定了该帐户.
验证猜测. 我执行了以下命令
的SQL>选择 * 来自dba_profiles,其中profile ='DEFAULT’ 和resource_name =“ PASSWORD_LIFE_TIME”;
PROFILE RESOURCE_NAME RESOURCE LIMITDEFAULT PASSWORD_LIFE_TIME PASSWORD 180
绝对是密码的限制时间是 180 因此,我决定取消此帐户的时间限制. 但是在执行取消操作之前,我需要弄清楚该程序使用了哪个帐户来连接oracle数据库,因此我检查了jdbc和odm文件.
解决此问题的三种方法
1.解锁账户A
假设帐户是A,密码是 123. 只需执行以下命令.
的SQL> 更改由以下用户标识的用户A 123 帐户解锁;
用户更改.
2.重置账户A的密码
的SQL>更改用户的身份 1234;
的SQL>更改用户的身份 123;
3.最后一种方法是将有效时间修改为无限
完成此操作后,无需重新启动数据库服务;
(1).检查dba_users表的概要文件字段值, 一般来说,该用户的个人资料是 “默认”
选择用户名,来自dba_users的个人资料;
(2).查看个人资料的PASSWORD_LIFE_TIME,例如 “默认”.
选择 * 从dba_profiles的WHERE s.profile ='DEFAULT’ AND resource_name =“ PASSWORD_LIFE_TIME”;
(3).修改值 “PASSWORD_LIFE_TIME” 到无限.
更改个人资料的默认限制PASSWORD_LIFE_TIME UNLIMITED;
没有相关的错误 “ORA-28001: 密码已过期” 我解锁该帐户后. 所以这个问题已经解决了.