前言
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
----------
152、可通过审计表查看账号成功登录时间
注意:默认情况下,该审计表仅记录成功连接数据库的记录
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 104、临时修改密码错误尝试次数为不限制
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




