Oracle的用户密码默认是有一定的有效期限,前一阵子有提示密码快过期但是没理睬,于是等过期之后就无法用那个用户名连接oracle数据库了。

首先看看服务器里面的数据库连接配置使用了哪些用户名和密码,然后进入oracle用system用户连接,接下来,执行下面的SQL语句查看当前数据库中所有用户的状态:

SELECT USERNAME,ACCOUNT_STATUS FROM DBA_USERS;

查询结果类似这样:

USERNAME ACCOUNT_STATUS
TEST1 OPEN
TEST2 LOCKED
TEST3 EXPIRED &LOCKED
SYSTEM LOCKER

如果嫌密码总是会过期比较麻烦的话,可以执行下面的SQL语句,让密码生命周期不受限制(仅适用于在本地开发的数据库):

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

针对已经过期的用户,如TEST3,需要重置它的密码(如密码设为test3):

ALTER USER TEST3 IDENTIFIED BY test3;

然后解除用户的锁定,

ALTER USER TEST3 ACCOUNT UNLOCK;

参考资料