oracle用户状态
来源:互联网 发布:飞升坐骑升级数据2017 编辑:程序博客网 时间:2024/06/06 08:45
一、当前ORACLE用户的状态可查看视图DBA_USERS;一般情况下在使用的正常用户均处于OPEN状态。
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
--------------------- ------------------
MGMT_VIEW OPEN
SYS OPEN
SYSTEM OPEN
DBSNMP OPEN
SYSMAN OPEN
DEMO OPEN
OUTLN EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
ORDSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
EXFSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
XDB EXPIRED & LOCKED
ORDPLUGINS EXPIRED & LOCKED
SI_INFORMTN_SCHEMA EXPIRED & LOCKED
DIP EXPIRED & LOCKED
ORACLE_OCM EXPIRED & LOCKED
TSMSYS EXPIRED & LOCKED
二、ORACLE数据库用户有多种状态,可查看视图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
九种状态可分为两类: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#获得其状态的两个组合。掌握前五种即可。
三、五种基本状态
五种基本状态可分为三类:1.正常状态;2.锁定状态;3.密码过期状态。
1、OPEN状态表示用户处于正常状态。
2、LOCKED和LOCKED(TIMED)表示用户被锁定状态。
用户被锁定有两种:
一种是DBA显式的通过SQL语句对用户进行锁定;
另一种是被动的锁定,默认情况下如果密码输入错误超过10次。
该限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可查看视图DBA_PROFILES。
1)显式锁定用户LOCKED:alter user [username] account lock;
2)输入10次错误密码后被动锁定LOCKED(TIMED)
3、EXPIRED和EXPIRED(GRACE)表示用户密码过期状态。
修改PROFILE中的PASSWORD_LIFE_TIME实现密码是否过期:alter profile default limit password_life_time unlimited;
密码过期后也可修改PROFILE中的PASSWORD_GRACE_TIME控制使用的天数:alter profile default limit password_grece_time 180;
对于密码过期的用户OPEN:alter user [username] identified by <password> account unlock;
四、锁定的两种状态[LOCKED和LOCKED(TIMED)]和密码过期的两种状态[EXPIRED和EXPIRED(GRACE)]之间任意组合即2×2=4,因此有四种组合状态。
DBA_USERS视图中ACCOUNT_STATUS记录的用户的当前状态,一般情况下在使用的正常用户均处于OPEN状态。
例如我们查看sec用户的当前状态,此时该用户处于OPEN状态,可以正常使用。
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
1.所有用户状态汇总
除了常用的OPEN状态还有哪些用户状态?
这个信息可以通过USER_ASTATUS_MAP获得。
sys@ora10g> 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视图查询),用户将被锁定,有关被动锁定的描述请参考文章《【故障】“ORACLE用户被锁定”故障处理和分析》(http://space.itpub.net/519536/viewspace-608769)。
(1)显式锁定sec用户LOCKED状态演示
sys@ora10g> alter user sec account lock;
User altered.
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC LOCKED
(2)输入10次错误密码后被动锁定LOCKED(TIMED)状态演示
尝试输入10次错误密码后再次查询用户状态。
sys@ora10g> select username, account_status from 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显式的去完成,简单演示一下。
sys@ora10g> alter user sec password expire;
User altered.
sys@ora10g> select username, account_status from 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_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
4.关于四种组合状态的解释
因为锁定的两种状态(LOCKED和LOCKED(TIMED))和密码过期的两种状态(EXPIRED和EXPIRED(GRACE))之间没有关系。因此他们之间可以任意组合,2×2=4,因此有四种组合状态:
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(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 lock password expire;
User altered.
sec@ora10g> select username, account_status from 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用户虽然有九种之多的状态,貌似很复杂,但只要我们能够对其进行清晰的划分类别,理解起来便会很容易。
从正常、锁定和密码过期三个角度去理解用户状态,一切都会水到渠成。
Good luck.
- Oracle的用户状态
- oracle更改用户状态
- oracle用户状态
- oracle用户状态
- Oracle用户状态
- oracle用户状态
- 查看oracle用户状态
- oracle用户状态
- Oracle各种用户状态解释
- Oracle数据库查看用户状态
- Oracle数据库查看用户状态
- oracle用户状态(account_status)详解
- oracle用户状态(account_status)详解
- 如何更改ORACLE 用户的 expired状态
- 如何更改ORACLE 用户的 expired状态
- 如何更改ORACLE 用户的 expired状态
- 用户状态
- Oracle 定期监控之二:用户对象状态监控
- oracle用户
- 深入分析单例模式
- JavaWeb开发,配置tomcat数据库连接池的问题,解决以及总结(三)
- Windows操作系统多核CPU内核线程管理方法
- 第三方移植需要修改内容
- oracle用户状态
- 多核CPU给系统设计带来了什么
- 用WEKA进行数据挖掘,第1部分:简介和回归
- 很高兴成为CSDN的一员
- 我的插件开发学习1--XHTML
- Windows操作系统的内核调试方法
- Web读取配置文件得到数据库连接(转JavaEye 青春飞扬)
- Linux动态链接库(标准对象)编程入门
- 动态申请数组