代码改变世界

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

  abce  阅读(7174)  评论(0编辑  收藏  举报

账户过期,必须要用户更改密码, 账户才能重新使用。

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

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

1
2
3
4
5
6
7
8
9
10
11
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)

1
2
3
4
5
6
7
8
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>

 

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

1
2
3
4
5
6
7
8
9
10
11
12
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查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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>

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示