oracle 用户 状态,Oracle用户ACCOUNT_STATUS的九种状态

1.#查看密码过期有效期

select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

2.#查看口令失效用户的profile文件

SELECT * FROM dba_users;

3.DBA_USERS视图中ACCOUNT_STATUS记录的用户的当前状态,一般情况下在使用的正常用户均处于OPEN状态。

例如查看sec用户的当前状态,此时该用户处于OPEN状态,可以正常使用。

sys@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC                          OPEN

1.所有用户状态汇总

除了常用的OPEN状态还有哪些用户状态?

这个信息可以通过USER_ASTATUS_MAP获得。

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.

用户状态不会超出以上九种。

2.九种状态的分类

以上九种可以分为两大类:1.基本状态;2.组合状态。

前五种是基本状态:

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

规律是这样的:后四种的组合状态可以通过状态号STATUS#获得它是哪两种状态的组合,例如10=2+8(10 EXPIRED(GRACE)

&LOCKED = 2 EXPIRED(GRACE) + 8 LOCKED)。因此只要了解基本状态的含义其他便可无师自通。

3.五种基本状态的诠释

这五种基本状态又可以分为三类:1.正常状态;2.锁定状态;3.密码过期状态。

1)OPEN状态不用多解释,表示用户处于正常状态。

2)用户被锁定状态,LOCKED和LOCKED(TIMED)两种状态都属于锁定状态

用户被锁定一般分为两种:一种是DBA显式的通过SQL语句对用户进行锁定;另外一种是被动的锁定,例如默认情况下如果密码输

入错误超过10次(这个限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,该信息可以通过DBA_PROFILES视图查询),用户将

被锁定。

(1)显式锁定sec用户LOCKED状态演示

sys@ora10g> alter user sec account lock;

User altered.

sys@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC

LOCKED

(2)输入10次错误密码后被动锁定LOCKED(TIMED)状态演示

尝试输入10次错误密码后再次查询用户状态。

sys@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC                          LOCKED(TIMED)

3)用户密码过期状态,EXPIRED和EXPIRED(GRACE)两种状态都属于密码过期状态

密码是否过期是通过修改PROFILE中的PASSWORD_LIFE_TIME实现的,密码过期后还可以使用的天数是通过PROFILE中的

PASSWORD_GRACE_TIME控制的。

有关PROFILE的描述请参考文章《【PROFILE】使用Oracle的PROFILE对用户资源限制和密码限制的研究与探索》

(http://space.itpub.net/519536/viewspace-616287)

关于密码过期可以使用SQL显式的去完成,简单演示一下。

alter user sec password expire;

User altered.

sys@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC                          EXPIRED

sys@ora10g> conn sec/sec

ERROR:

ORA-28001: the password has expired

Changing password for sec

New password:

Retype new password:

Password changed

Connected.

sec@ora10g>

sec@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC                          OPEN

4.关于四种组合状态的解释

因为锁定的两种状态(LOCKED和LOCKED(TIMED))和密码过期的两种状态(EXPIRED和EXPIRED(GRACE))之间没有关系。因此他们

之间可以任意组合,2×2=4,因此有四种组合状态:

5EXPIRED & LOCKED(TIMED)

6EXPIRED(GRACE) & LOCKED(TIMED)

9EXPIRED & LOCKED

10EXPIRED(GRACE) & LOCKED

分别解释这四种组合状态

1)EXPIRED& LOCKED(TIMED)状态表示用户过期后,错误密码尝试次数超过PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;

2)EXPIRED(GRACE)& LOCKED(TIMED)状态表示用户在密码过期后的有效期内,不成功登录次数超过PROFILE中的

FAILED_LOGIN_ATTEMPTS的限制;

3)EXPIRED& LOCKED状态表示用户过期的同时处于锁定状态,做一个实验。

sec@ora10g> alter user sec account lockpassword expire;

User altered.

sec@ora10g> select username, account_statusfrom dba_users where username = 'SEC';

USERNAME                      ACCOUNT_STATUS

--------------------------------------------------------------

SEC                          EXPIRED & LOCKED

sec@ora10g> conn sec/sec

ERROR:

ORA-28000: the account is locked

Warning: You are no longer connected to ORACLE.

4)EXPIRED(GRACE)& LOCKED状态表示用户在密码过期后的有效期内被DBA手工锁定。

5.小结

Oracle用户虽然有九种之多的状态,貌似很复杂,但只要我们能够对其进行清晰的划分类别,理解起来便会很容易。

从正常、锁定和密码过期三个角度去理解用户状态,一切都会水到渠成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值