问题描述
Oracle 数据库用户密码长时间没有修改过期,导致Oracle驱动抛出如下错误:
Caused by: java.sql.SQLException: ORA-28001: the password has expired
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
问题解决
解决此问题的方法有很多种,我列出一种,共两个步骤。
1. 以管理员用户登录,解锁相应的用户
sqlplus / as sysdba
alter user demo_user account unlock;
exit
2. 以已解锁锁的用户登录,重置密码
~]$ sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jan 13 15:06:09 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter user-name: demo_user
Enter password:
ERROR:
ORA-28001: the password has expired
Changing password for demo_user
New password:
Retype new password:
Password changed
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options