共计 1717 个字符,预计需要花费 5 分钟才能阅读完成。
Oracle 数据库账户过期, 必须要用户更改密码, 账户才能重新使用。
但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码。
在 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>
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130321.htm