首页 / 数据库 / 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本文永久更新链接地址