在开发环境下,由于直接修改了数据库用户的密码,之后一直不能连接,及时执行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 用户锁定问题相关推荐

  1. javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁

    环境 windows 2003 server websphere 7. druid 0.2.9 oracle 11 druid参数 initialSize=60 maxActive= 200 异常 [ ...

  2. Oracle锁表 行级锁 表级锁 行级锁

    2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行       ...

  3. oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧

    在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表.现在就针对这一问题,提下个人的解决Oracle锁表的技巧. 首先问题分析: (1)锁的分析 ORACLE里锁 ...

  4. 解决Oracle锁表问题

    文章目录 数据库操作语句的分类 oracle表在什么情况下会被锁住 Oracle锁表查询和解锁 通过第一步查出来的信息找到被锁的表之后执行如下语句解锁该表: 锁的模式 数据库操作语句的分类 DDL:数 ...

  5. oracle锁表后,系统能否自动解锁?

    oracle锁表后,系统能否自动解锁?(急) [问题点数:100分] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 关注 zyxgy zyxgy 本版等级: 结帖率:30 ...

  6. oracle 锁表查询和解表操作

    数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...

  7. oracle锁表导致update,delete,insert出现无反应的问题

    java项目中遇到更新,删除等操作无反应的问题,但后台却不报错,也能正确打印sql语句.最终发现是oracle锁表导致的. 解决方法: 1.查询oracle数据库被锁的表 SELECT T1.ORAC ...

  8. Oracle锁表解决方法的详细记录详解

    一淘模板网给大家带来了关于Oracle的相关知识,在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表,下面给大家介绍了关于Oracle锁表解决方法的相关资料,希 ...

  9. ORACLE锁表解决办法

    ORACLE锁表解决办法 [61000][54] ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 报错原因:对表的操作短时间内太过快速和频繁而导致的数据库锁表. ...

最新文章

  1. Esper 20章 优化
  2. Tomcat配置Web虚拟目录
  3. 产品问答 | 作为项目负责人,怎么提升成员工作斗志?
  4. 【村通网】凭啥说python3.6+字典(dict)是有序的?
  5. 坐标偏差大_控制点的坐标复核(二)
  6. java idea 模块_IDEA搭建java多模块module项目-Go语言中文社区
  7. java编写正则表达式_如何用Java编写最快的表达式评估器之一
  8. 在ECR上推送Spring Boot Docker映像
  9. 垃圾回收:引用计数与分代收集机制
  10. python保存和加载数组
  11. 微信小程序蓝牙模块BLE开发说明基础知识
  12. Python 自动化测试 必会模块 Unittest
  13. Hp服务器系统盘被热拔插会怎么样,被骗十几年 原来这些设备不能热插拔!
  14. Spark Steaming快速入门
  15. [flink]各种大厂开源案例
  16. act考试是什么意思?
  17. 创建Mac的shell命令文件(xxx.sh)
  18. 【MFC】MFC中SQLite使用经验总结
  19. 高质量PPT模板网站
  20. yarn : 无法加载文件 C:\Users\EDY\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。

热门文章

  1. ASP.NET Core 2.0 支付宝当面付之扫码支付
  2. 微软确认5月2日召开新品发布会 8天后就是Build 2017大会
  3. 你真的理解CAP理论吗?
  4. 基于Jenkins快速搭建持续集成环境
  5. 微软想让你跟机器人说句话就把事办了
  6. [转]白话阿里巴巴Java开发手册高级篇
  7. 保姆级C语言版高斯坐标正算反算倾情奉献!
  8. Eclipse提示The **** cannot be resolved. It is indirectly referenced from required .cl
  9. linux之mutex(互斥锁)
  10. linux网络编程之怎么配置好unp.h文件