Welcome 微信登录

首页 / 数据库 / MySQL / Oracle数据库用户账号处于expired状态解决方法

Oracle数据库账户过期,必须要用户更改密码, 账户才能重新使用。但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码。在11G中,dba_users.password已经不再显示用户的密码:SQL> select username,ACCOUNT_STATUS from dba_users where username in ("SYSTEM","SCOTT");USERNAME                     ACCOUNT_STATUS------------------------------ --------------------------------SCOTT                          OPENSYSTEM                       EXPIREDSQL> select password from dba_users where username in ("SYSTEM","SCOTT");PASSWORD------------------------------在系统表user$中,可以查看用户的密码(PASSWORD)和状态(ASTATUS)SQL> select user#,name,password,astatus from user$ where name in ("SYSTEM","SCOTT");   USER# NAME                         PASSWORD                          ASTATUS---------- ------------------------------ ------------------------------ ----------        83 SCOTT                          F894844C34402B67                        0       5 SYSTEM                       2D594E86F93B17A1                        1SQL> 可以通过上面的查询结果,用原来的密码来修改过期用户的密码:SQL> alter user system identified by values "2D594E86F93B17A1"; User altered.SQL> select user#,name,password,astatus from user$ where name in ("SYSTEM","SCOTT");   USER# NAME                         PASSWORD                          ASTATUS---------- ------------------------------ ------------------------------ ----------        83 SCOTT                          F894844C34402B67                        0       5 SYSTEM                       2D594E86F93B17A1                        0SQL> 其实也可以直接修改表user$的字段ASTATUS为0,这样用户账号就变成open状态了。
ASTATUS对应的值的含义可以同过user_astatus_map查看SQL> select * from user_astatus_map; 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) & LOCKED9 rows selected.SQL> 更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址