搜尋
首頁資料庫mysql教程ORA-28000: the account is locked用户锁定问题排查解决

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

今天同事反映一个问题,某个测试库修改了密码,并改了相关应用使用的密码后,仍出现一会账户就被锁住,报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                              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表示连续登录失败的次数。

Oracle 11g 在RedHat Linux 5.8_x64平台的安装手册

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

本文永久更新链接地址:

linux

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用Alter Table語句在MySQL中更改表?如何使用Alter Table語句在MySQL中更改表?Mar 19, 2025 pm 03:51 PM

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

如何為MySQL連接配置SSL/TLS加密?如何為MySQL連接配置SSL/TLS加密?Mar 18, 2025 pm 12:01 PM

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

您如何處理MySQL中的大型數據集?您如何處理MySQL中的大型數據集?Mar 21, 2025 pm 12:15 PM

文章討論了處理MySQL中大型數據集的策略,包括分區,碎片,索引和查詢優化。

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?Mar 21, 2025 pm 06:28 PM

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

如何使用Drop Table語句將表放入MySQL中?如何使用Drop Table語句將表放入MySQL中?Mar 19, 2025 pm 03:52 PM

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

如何在JSON列上創建索引?如何在JSON列上創建索引?Mar 21, 2025 pm 12:13 PM

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

您如何用外國鑰匙代表關係?您如何用外國鑰匙代表關係?Mar 19, 2025 pm 03:48 PM

文章討論了使用外國密鑰來代表數據庫中的關係,重點是最佳實踐,數據完整性和避免的常見陷阱。

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?Mar 18, 2025 pm 12:00 PM

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用