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;