您的位置:首页 > 数据库 > Oracle

ORACLE数据库用户账号处于expired状态如何处理

2016-04-16 11:32 190 查看
账户过期,必须要用户更改密码, 账户才能重新使用。

但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码。

在11G中,dba_users.password已经不再显示用户的密码:

SQL> select username,ACCOUNT_STATUS from dba_users where username in ('SYSTEM','SCOTT');

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT                          OPEN
SYSTEM                         EXPIRED

SQL> 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                        1

SQL>


可以通过上面的查询结果,用原来的密码来修改过期用户的密码:

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                        0

SQL>


其实也可以直接修改表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) & LOCKED

9 rows selected.

SQL>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: