php oracle 锁表,ORACLE 用户锁定问题
在开发环境下,由于直接修改了数据库用户的密码,之后一直不能连接,及时执行alter user username account unlock 还是提示用户锁定。刚开始只是怀疑是数据库的问题,就一直在数据库上找问题,其实最终的问题是更改密码后,应用程序的还在链接着数据库,由于
在开发环境下,由于直接修改了数据库用户的密码,之后一直不能连接,及时执行alter user username account unlock 还是提示用户锁定。刚开始只是怀疑是数据库的问题,就一直在数据库上找问题,其实最终的问题是更改密码后,应用程序的还在链接着数据库,由于数据库默认设置登录失败10次用户会被锁定。停掉应用,重新执行alter user username account unlock,问题得到解决。
有关数据库用户状态及如何查询进行介绍:
oracle11g数据库安全加固须谨慎
数据库安全配置中,需要做相关的安全加固工作。以确认数据库的安全,但是,有些时候,操作不当或者数据库业务账号修改密码后,而程序的连接数据库的配置封装在jar里,如果jar内的连接数据库的配置信息没有做相应的修改的话。就会对数据库的此业务账号造成严重的后果。
因此,真正了解Oracle安全数据库用户的状态,就显得尤为重要了。下面我们就看一下oracle数据库中的多种用户状态。
ORACLE数据库用户有多种状态,可查看视图USER_ASTATUS_MAP。
SQL> col status for a30
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.
通过上面的查询我们可以看到在Oracle中account总共有9种不同的状态,对应dba_users视图中的account_status字段。
下面我分别就每种状态的含义和出现的情况做个简单的说明,以便于今后的系统管理和维护。
分析上面的9种状态不难看出,其实独立的状态只有OPEN、EXPIRED、LOCKED、EXPIRED(GRACE)、LOCKED(TIMED) 5种形式。其他4种不过是前面几种形式的组合而已。
或者也可以这样理解:
以上的9种状态可以分为两大类:
1、基本状态(前五种为基本状态:0 OPEN、1 EXPIRED、2 EXPIRED(GRACE)、4 LOCKED(TIMED)、8 LOCKED);
2、组合状态(后四种为组合状态:5 EXPIRED & LOCKED(TIMED)、6 EXPIRED(GRACE) & LOCKED(TIMED)、9 EXPIRED & LOCKED、10 EXPIRED(GRACE) & LOCKED);
后四种的组合状态可通过状态号STATUS#获得其状态的两个组合。掌握前五种即可。
具体详细解释请参考如下:
OPEN: 这个是大家最常见的,就是表示这个是可用的,没有任何限制的帐户
LOCKED: 表示这个帐户被DBA锁定. 一般通过alter user username account lock(unlock);
EXPIRED: 表示该帐户被设置为口令到期,要求用户在下次logon的时候修改口令(系统会在该account被设置为expire后的第一次登陆是提示你修改密码)
EXPIRED(GRACE): 当设置了grace以后(第一次成功登录后到口令到期后有多少天时间可改变口令,在这段时间内,帐户被提醒修改口令并可以正常登陆,
account_status显示为EXPIRED(GRACE).
LOCKED(TIMED): 这种状态表示失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定,需要注意的是,在Oracle 10g中,默认的DEFAULT值是10次.
EXPIRED & LOCKED: 表示此账户被设置为口令到期且被锁定。
EXPIRED(GRACE) & LOCKED(TIMED): 当account_stutus为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定
EXPIRED & LOCKED(TIMED): 当设置了account expire后,用户又失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定
EXPIRED(GRACE) & LOCKED: 用户account_status为EXPIRED(GRACE)后,又被DBA 手工锁定帐户后的状态
下面通过实例操作来说明:
本人对oracle数据库的profile文件进行如下安全设置:(其中的FAILED_LOGIN_ATTEMPTS 6是对用户尝试失败的登录最大次数的限制,这里只允许最多尝试失败6次)
SQL>ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION verify_function_11g
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;
通过以下语句查询当前用户的状态:
SQL> alter session set nls_date_format='yyyy-MM-dd hh24:mi:ss';
SQL> show linesize;
SQL> set linesize=1000;
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER OPEN
DBSNMP OPEN
SYSMAN OPEN
SCOTT OPEN
FLOWS_FILES EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
ORDDATA EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
接下来使用账号dba_user和scott,以错误的密码尝试连接数库6次以上后,再查看数据库用户状态:
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER EXPIRED(GRACE) & LOCKED(TIMED)
DBSNMP OPEN
SYSMAN OPEN
SCOTT EXPIRED(GRACE) & LOCKED(TIMED)
FLOWS_FILES EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
ORDDATA EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
事实证明,当用户DBA_USER和SCOTT为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定.
如果这两个用户为生产现网的业务账户的话,管理员不能及时发现问题或报警的话,将会造成业务中断等严重的后果。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php oracle 锁表,ORACLE 用户锁定问题相关推荐
- javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁
环境 windows 2003 server websphere 7. druid 0.2.9 oracle 11 druid参数 initialSize=60 maxActive= 200 异常 [ ...
- Oracle锁表 行级锁 表级锁 行级锁
2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表 行级锁 表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行 ...
- oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧
在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表.现在就针对这一问题,提下个人的解决Oracle锁表的技巧. 首先问题分析: (1)锁的分析 ORACLE里锁 ...
- 解决Oracle锁表问题
文章目录 数据库操作语句的分类 oracle表在什么情况下会被锁住 Oracle锁表查询和解锁 通过第一步查出来的信息找到被锁的表之后执行如下语句解锁该表: 锁的模式 数据库操作语句的分类 DDL:数 ...
- oracle锁表后,系统能否自动解锁?
oracle锁表后,系统能否自动解锁?(急) [问题点数:100分] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 关注 zyxgy zyxgy 本版等级: 结帖率:30 ...
- oracle 锁表查询和解表操作
数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...
- oracle锁表导致update,delete,insert出现无反应的问题
java项目中遇到更新,删除等操作无反应的问题,但后台却不报错,也能正确打印sql语句.最终发现是oracle锁表导致的. 解决方法: 1.查询oracle数据库被锁的表 SELECT T1.ORAC ...
- Oracle锁表解决方法的详细记录详解
一淘模板网给大家带来了关于Oracle的相关知识,在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表,下面给大家介绍了关于Oracle锁表解决方法的相关资料,希 ...
- ORACLE锁表解决办法
ORACLE锁表解决办法 [61000][54] ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 报错原因:对表的操作短时间内太过快速和频繁而导致的数据库锁表. ...
最新文章
- Esper 20章 优化
- Tomcat配置Web虚拟目录
- 产品问答 | 作为项目负责人,怎么提升成员工作斗志?
- 【村通网】凭啥说python3.6+字典(dict)是有序的?
- 坐标偏差大_控制点的坐标复核(二)
- java idea 模块_IDEA搭建java多模块module项目-Go语言中文社区
- java编写正则表达式_如何用Java编写最快的表达式评估器之一
- 在ECR上推送Spring Boot Docker映像
- 垃圾回收:引用计数与分代收集机制
- python保存和加载数组
- 微信小程序蓝牙模块BLE开发说明基础知识
- Python 自动化测试 必会模块 Unittest
- Hp服务器系统盘被热拔插会怎么样,被骗十几年 原来这些设备不能热插拔!
- Spark Steaming快速入门
- [flink]各种大厂开源案例
- act考试是什么意思?
- 创建Mac的shell命令文件(xxx.sh)
- 【MFC】MFC中SQLite使用经验总结
- 高质量PPT模板网站
- yarn : 无法加载文件 C:\Users\EDY\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。
热门文章
- ASP.NET Core 2.0 支付宝当面付之扫码支付
- 微软确认5月2日召开新品发布会 8天后就是Build 2017大会
- 你真的理解CAP理论吗?
- 基于Jenkins快速搭建持续集成环境
- 微软想让你跟机器人说句话就把事办了
- [转]白话阿里巴巴Java开发手册高级篇
- 保姆级C语言版高斯坐标正算反算倾情奉献!
- Eclipse提示The **** cannot be resolved. It is indirectly referenced from required .cl
- linux之mutex(互斥锁)
- linux网络编程之怎么配置好unp.h文件