【用户状态】详细解读Oracle用户ACCOUNT_STATUS的九种状态
转至:http://blog.itpub.net/519536/viewspace-672276/
例如我们查看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.
secooler
10.08.31
-- The End --
【用户状态】详细解读Oracle用户ACCOUNT_STATUS的九种状态的更多相关文章
- 【密码】Oracle用户密码系列
[密码]Oracle用户密码系列 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- Oracle用户,权限,角色以及登录管理 scoot 授权
Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...
- Oracle用户的初始化问题
上一篇博文介绍了关于.bashrc和.bash_profile的相关知识,在oracle的用户设置中能发挥作用. 场景:上周准备学习一下oracle,下载了安装文件后,在linux上新建了一个用户or ...
- Oracle用户和模式,表空间
oracle 用户与表空间关系 oracle用户与表空间关系用户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于一个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时 ...
- [linux] C语言Linux系统编程-TCP通信的11种状态
三次握手由client主动发出SYN请求, 此时client处于SYN_SENT状态(第一次握手)当server收到之后会由LISTEN转变为SYN_REVD状态, 并回复client, client ...
- Java线程的五种状态详解
状态转换图 1.new状态:通过new关键字创建了Thread或其子类的对象 2.Runnable状态:即就绪状态.可从三种状态到达,new状态的Thread对象调用start()方法,Running ...
- Windows 电脑的四种运行状态工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), S4 关机状态 (Shutdown), S5
== Windows 电脑的四种运行状态 == 这四种运行状态(或称电源状态)是: 工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), ...
- 简单理解Hibernate三种状态的概念及互相转化
本文描述了Hibernate三种状态的概念及互相转化.Java对象的生命周期中有三种状态,而且互相转化.它们分别是临时状态,持久化状态,以及游离状态. AD:WOT2015 互联网运维与开发者大会 热 ...
- thinkjs——一个字段一种数字代表两种状态
问题来源: 现有一张company数据表,其中有一个字段state(-2:待审核:-1:禁用:0:正常:1:会员过期:),一般而言,在前期设计数据表的时候,会将每种状态下都用一种特定的数字代表,但是这 ...
随机推荐
- Postman 支持 gRPC 了!继续领先 ~
最近国产API管理工具比较热,几款产品在API管理层面做得也都还不错,但主要还是对HTTP相关的API管理,毕竟这类API的应用目前还是最为广泛的.但显然,还有不少其他应用场景目前没有覆盖到,DD在之 ...
- 字节Android Native Crash治理之Memory Corruption工具原理与实践
作者:字节跳动终端技术--庞翔宇 内容摘要 MemCorruption工具是字节跳动AppHealth (Client Infrastructure - AppHealth) 团队开发的一款用于定 ...
- maven项目 子父级工程。
一 .什么是 maven 子父级工程? 建立一个maven项目,然后在该项目 下创建一个module,子级的maven,他继承于父级项目. 1.新建立 maven项目,file ------new- ...
- mac 下载MySQL后,需要这样打开
1.打开mac终端 2.输入 export PATH=${PATH}:/usr/local/mysql/bin 3.输入mysql -u root -p 4输入密码
- Jackson 的 基本用法
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson ...
- 【收藏】Supervisor的作用与配置
原文链接:https://www.jianshu.com/p/0226b7c59ae2 supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supe ...
- mysql查询奇数行或者偶数行数据
select * from (select @rownum := @rownum+1 as row_num, t.* from 表名 t,(select @rownum:=0) tmp_table o ...
- 如何按规定的格式向mysql中导入数据
1.首先我们拿到数据,数据必须按照一定的格式书写的.如用|区分字段,换行区分row 12107 | 心情1 | 今天的心情很不好啊. 12108 | 天气 | 今天天气还行. 12109 | 臭美 | ...
- MySQL基本命令语法之select
目录 MySQL基本命令语法之select 查询去重以及常数 空值与着重号 着重号 空值 运算符 算术运算符 比较运算符 符号型 非符号型 逻辑运算符 优先级 排序分页 排序 分页 拓展 多表查询 等 ...
- Java中ArrayList边遍历边修改
用for-each 边遍历ArrayList 边修改时: public static void main(String[] args) { ArrayList<String> list = ...