问题概述
oracle中,经常用户的状态会变成locked,expired等状态,遇到这种情况,按照具体环境进行操作。
首先,如果是locked状态,直接执行 alter user scott account unlock 就可以了。
但是如果变成expired状态,oracle本身是不提供解锁的语句的,因为账户过期,必须要用户更改密码, 账户才能重新使用。但有些时候,因为各种原因,我们并不知道原密码的明文是什么,同时在高版本数据库中,对用户密码进行了高强度加密,无法使用密码密文进行修改时,可以通过修改USER$的方式进行操作。
解决方案
UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
COMMIT;
alter system flush shared_pool;
其中,ASTATUS有以下取值:
STATUS# STATUS
---------- --------------------------------
0 OPEN
1 EXPIRED
2 EXPIRED(GRACE)
4 LOCKED(TIMED)
8 LOCKED
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(GRACE) & LOCKED
标签:LOCKED,更改,EXPIRED,TIMED,密码,ORACLE,expired,GRACE
From: https://blog.51cto.com/u_13482808/7835803