今天同事反映一个问题,某个测试库修改了密码,并改了相关应用使用的密码后,仍出现一会账户就被锁住,报ORA-28000: the account is locked的错误。

检查过程:

1. 查看资源限制生效参数

SQL> show parameter resource

NAME                                TYPE        VALUE

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

resource_limit                      boolean    FALSE

FALSE表示未启动资源限制。

2. 查看该用户所用的PROFILE

SQL> select resource_name, limit from dba_profiles where profile='DEFAULT';

RESOURCE_NAME                    LIMIT

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

COMPOSITE_LIMIT                  UNLIMITED

SESSIONS_PER_USER                UNLIMITED

CPU_PER_SESSION                  UNLIMITED

CPU_PER_CALL                    UNLIMITED

LOGICAL_READS_PER_SESSION        UNLIMITED

LOGICAL_READS_PER_CALL          UNLIMITED

IDLE_TIME                        UNLIMITED

CONNECT_TIME                    UNLIMITED

PRIVATE_SGA                      UNLIMITED

FAILED_LOGIN_ATTEMPTS            10

PASSWORD_LIFE_TIME              UNLIMITED

PASSWORD_REUSE_TIME              UNLIMITED

PASSWORD_REUSE_MAX              UNLIMITED

PASSWORD_VERIFY_FUNCTION        NULL

PASSWORD_LOCK_TIME              1

PASSWORD_GRACE_TIME              7

其中FAILED_LOGIN_ATTEMPTS表示连续登陆失败的次数,这里表示连续登陆10次失败则锁定用户。

3. 解除用户锁定ALTER USER pss3 ACCOUNT UNLOCK;后观察现象

SQL> select name, lcount from user$ where name='PSS3';

NAME                              LCOUNT

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

PSS3                                  10

不到一分钟,登陆失败次数就到10次了。

初步结论:

可能有应用仍使用旧的密码登陆,登陆失败后重复尝试,直到10次为止。

但问题就来了:

1. FAILED_LOGIN_ATTEMPTS设置为10次,但未启动resource_limit,为什么还受到10次的限制呢?

2. 怎么知道还有哪些应用由于未修改密码导致ORA错误呢?

问题1:FAILED_LOGIN_ATTEMPTS设置为10次,但未启动resource_limit,为什么还受到10次的限制呢?

这篇MOS文章160528.1(Profile Limits (Resource Parameter(s)) Are Not Enforced / Do Not Work)文章说了一些:

After creating a new profile or altering an old one to limit the following profile resources there is no change:

SESSIONS_PER_USER

CPU_PER_SESSION

CPU_PER_CALL

CONNECT_TIME

IDLE_TIME

LOGICAL_READS_PER_SESSION

COMPOSITE_LIMIT

PRIVATE_SGA

The resource usage limits are not enforced and the users that are assigned the profile continue to use resources beyond profile's limits.

CAUSE

The initialization parameter RESOURCE_LIMIT is set to FALSE (default).

由于未设置RESOURCE_LIMIT为TRUE,以上变量修改后不会生效。

这里没有提到FAILED_LOGIN_ATTEMPTS,换句话说,像FAILED_LOGIN_ATTEMPTS这些变量是不受RESOURCE_LIMIT参数限制的,再看FAILED_LOGIN_ATTEMPTS这种变量属于用户口令管理方面的,像上面这些变量则属于资源管理方面的,猜测Oracle对于资源管理的限制则需要RESOURCE_LIMIT为TRUE,对于口令管理方面的限制并不受RESOURCE_LIMIT的影响。

OCP教材中正好说了:“Profiles are a useful way of managing passwords and resources but can really only apply in an environment where every application user has their own database user account.”注意到这里他将profile分成管理密码和资源两大类,虽然没有明说,但结合以上两段参考,以及上述实际碰到的问题,有理由相信口令管理方面的限制并不受RESOURCE_LIMIT参数的影响。

问题2:怎么知道还有哪些应用由于未修改密码导致ORA错误呢?

上面尝试了UNLOCK账户后不到一分钟LCOUNT登录失败次数就到了10次,说明这段时间有应用频繁重试密码,进一步,如果我们能找到这段时间访问库的IP,再筛选可能的IP和密码修改的应用,就可能找到“罪魁祸首”。

要想找到访问库的IP,可以通过设置监听日志,查找IP。

监听器的日志类似于alert日志,帖子中说日志默认路径是$ORACLE_HOME/network/log/listener.log,但我用的11g,不知道是否修改过,并没有找到这个目录。至于怎么找到的,接下来会说到。

按照@secooler的教程,开启监听器日志的方式有两种:

1. 不需要重启监听器的情况下通过设置log_status参数为off来实现。

2. listener.ora文件中增加LOGGING_=OFF参数,然后重启监听器实现

可以根据不同需要选择不同的方式。

这里我选择第一种,执行lsnrctl后执行set log_status on,然后需要找到日志路径:

ora11g@vm-kvm-ora$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 20-AUG-2014 11:56:27

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

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

Alias                    LISTENER

Version                TNSLSNR for Linux: Version 11.2.0.3.0 - Production

Start Date            30-APR-2014 15:22:19

Uptime                111 days 20 hr. 34 min. 8 sec

Trace Level            off

Security                ON: Local OS Authentication

SNMP                  OFF

Listener Parameter File  /oracle/ora11g/product/11.2.0/network/admin/listener.ora

Listener Log File        /oracle/ora11g/diag/tnslsnr/vm-kvm-ora/listener/alert/log.xml

这里我们看到有个信息Listener Log File,后面就是对应的日志路径和日志文件名。

11g中使用了log.xml这种xml格式记录监听日志。

内容类似于:

20-AUG-2014 10:07:30 * (CONNECT_DATA=(SERVICE_NAME=pss3)(CID=(PROGRAM=dcs_data_sync)(HOST=v490h4-tux-t)(USER=dcsopen))) * (ADDRESS=(PROTOCOL=tcp)(HOST=x.x.x.x)(PORT=37339)) * establish * pss3 * 0

因此只需要找到解锁用户后仍登录的IP,然后再筛选可能的应用就行了。

这里还有个知识点,就是FAILED_LOGIN_ATTEMPTS设置的是连续登录失败的次数,还是累计登录失败的次数?

FAILED_LOGIN_ATTEMPTS表示连续登录失败的次数。

oracle12c报ora28000,ORA-28000: the account is locked用户锁定问题排查解决相关推荐

  1. mysql account locked_ORA-28000: the account is locked用户锁定问题排查解决

    今天同事反映一个问题,某个测试库修改了密码,并改了相关应用使用的密码后,仍出现一会账户就被锁住,报ORA-28000: the account 今天同事反映一个问题,某个测试库修改了密码,并改了相关应 ...

  2. oracle 用户被锁住 28000 the account is locked

    场景:用docker起了一个oracle数据库,以前一直没问题,有一天在连接的时候报 28000 the account is locked,使用navicat连接的可以使用以下方法 使用管理员账号和 ...

  3. ssh报user not allowed because account is locked错误

    ssh作为一项泛用性极广的服务,总是会出现各种各样的问题. 最常见的ssh时出现连不上,多半是sshd服务异常和.ssh及目录下的权限问题,sshd服务正常后 设置.ssh权限为700,./ssh/* ...

  4. 登录plsql 报错 the account is locked --用户被锁

    登录数据库服务器,进入oracle用户下 [root@uumsnormal-oracle admin]# su - oracle [oracle@uumsnormal-oracle ~]$ sqlpl ...

  5. oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案

    原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...

  6. 【DG】DG备库报ORA-28000: the account is locked的解决办法

    [DG]DG备库报ORA-28000: the account is locked的解决办法 测试用户为lhr 现象:主备库的lhr用户的状态都是OPEN,但是,备库连接的时候报ORA-28000: ...

  7. 【解决办法】Oracle登录报错ORA-28000: the account is locked

    ORA-28000: the account is locked 第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba; 第二步:选择myjo ...

  8. 解决ORA-28000: the account is locked

    在oracle中,连续十次尝试登陆不成功,那么此账户将会被锁定(lock).当使用被锁定的账户登录时,系统会报错:ORA-28000: the account is locked. 查询FAILED_ ...

  9. Oracle 数据库用户锁定与解锁,用户锁定最大密码失败次数设置方法,ORA-28000: the account is locked问题解决方法

    用户多次密码输入错误达到一定值就会被锁定. -- 用户锁定方法 alter user 数据库名 account lock; -- 用户解锁方法 alter user 数据库名 account unlo ...

最新文章

  1. 前端开发实习生的第一天
  2. 词汇量贫乏只会说yes、no?试试这些高级感替代词!
  3. 80端口被占用了怎么办_如何查看端口占用情况
  4. 《Orange’s 一个操作系统的实现》1.搭建操作系统开发环境
  5. 使用零代码平台构建应用,应该怎样转变思路?
  6. cassandra 入门_Apache Cassandra和Java入门(第一部分)
  7. 应用程序_构建应用程序12 条参考准则
  8. MySQL怎么查同一列多行展示_一个MySQL查询将多个行中的字符串合并为一行,并在另一列中显示相应的用户ID总和?...
  9. Pytorch squeeze() 和 unsqueeze() 方法区别
  10. vue 方法回调通知执行下一个方法
  11. Cookie中设置了 HttpOnly,Secure 属性,有效的防止XSS攻击,X-Frame-Options 响应头避免点击劫持...
  12. ask调制与解调matlab仿真,ask调制与解调的matlab仿真.doc
  13. 云闪付app怎么删除常用转账人?云闪付转账记录怎么删除?
  14. python 排队论_建模算法(七)——排队论模型
  15. RAKsmart高防服务器防御形式解析
  16. eis电子防抖好还是光学防抖好_EIS和OIS有啥差别?一文搞懂手机防抖的那些事儿...
  17. TCL/TK文件操作
  18. r语言中进行数据可视化_R中的数据可视化
  19. 运营商大数据获客 企业“起死回生”代名词
  20. 无线通信:Wi-Fi 基本知识

热门文章

  1. Struts2自定义的转换器
  2. JavaScript选择器
  3. ajax提交sql注入,ajaxpro存在SQL注入漏洞?
  4. Java 并发(生产者/消费者 模式)
  5. 负载敏感系统详解_宣布Enarx用于运行敏感工作负载
  6. 2019年python黑马_决心在2019年让Python成为您的朋友
  7. dsp怪胎_我是如何发现内心怪胎的
  8. moodle 用户 权限_用户和社区反馈如何驱动Moodle
  9. 浏览器推送 comet
  10. Illustrator 上色