暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库账号频繁被锁

原创 Albert Tan DBA 之路 2025-04-03
314

前言

Oracle数据库中的账号用于提供给外部或Oracle内部通信使用的账号。例如:OA系统中有些账号就会存在Oracle数据库的dba_users表中,而EBS系统则会有一个独立的表用于存放应用的账号数据-fnd_users。其中dba_users表中的账号受控于Oracle数据库中的profile影响。


背景

用户某天执行了更改数据库账号的密码,且重启数据库后,发现数据库能够重启,但应用无法通过该账号进行连接。在应用层每启动一次,则会调用该账号连接数据库一次,经过几次的应用启动,导致该账号被锁住,且解锁后,依然无法登录且迅速被锁。


问题溯源

1、造成账号被锁的原因有哪些?

  • 数据库账号错误尝试次数达到峰值,默认是10次
  • 密码超过多少天未修改被锁,默认是180天

2、修改流程是否有错?

  • 该账号是否与应用绑定?如与应用绑定,则需要关闭应用后,在数据库修改完密码,立即到应用端的配置文件中修改对应的账号密码

结论

1、查询当前账号登录失败次数

SQL> select LCOUNT from user$ where name='TEST';

    LCOUNT
----------
    15

2、可通过审计表查看账号成功登录时间
注意:默认情况下,该审计表仅记录成功连接数据库的记录

SQL>select sessionid,userid,userhost,comment$text,spare1,to_char(ntimestamp#+1/3,'yyyy-mm-dd hh24:mi:ss') from aud$ where returncode=1017 and userid='ADMIN' order by ntimestamp# desc;


 SESSIONID USERID     USERHOST        COMMENT$TEXT                                                                                                  PARE1          time
---------- ---------- --------------- -------------------------------------------------------- ------------------------------------------------------------ ----------------------

25796282 ADMIN    test.localdomain.com  Authenticated by: DATABASE; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.111.111)(PORT=2341))     root       2023-03-19 11:43:45
## Authenticated by: DATABASE;:使用正确的账号密码成功连接数据库 ## Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.111.111)(PORT=2341)) :表示连接方式、主机地址、端口


3、查询profile中针对账号的错误尝试次数

SQL> set linesize 120
SQL> col PROFILE for a30
SQL> col RESOURCE_NAME for a25
SQL> col LIMIT for a20

SQL>select * from dba_profiles where resource_name = 'FAILED_LOGIN_ATTEMPTS';
PROFILE              RESOURCE_NAME             RESOURCE_TYPE            LIMIT
---------------- ------------------------- ------------------------ --------------------
DEFAULT              FAILED_LOGIN_ATTEMPTS     PASSWORD                 10


4、临时修改密码错误尝试次数为不限制

SQL>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;


5、解锁账号

SQL>alter user test account unlock;


6、更改应用配置文件账号密码
此处省略,如若没有则无需执行该步骤


7、数据库重新校验登录

$ sqlplus test/test@test
SQL*Plus: Release 11.2.0.4.0 - Production on Thu Apr 3 10:36:11 2025
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>


8、更改密码尝试错误次数为原值即可

SQL>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10;
SQL>commit;


















「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论