首页 数据库 mysql教程 ORA-28000: the account is locked用户锁定问题排查解决

ORA-28000: the account is locked用户锁定问题排查解决

Jun 07, 2016 pm 04:43 PM

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
MySQL的角色:Web应用程序中的数据库 MySQL的角色:Web应用程序中的数据库 Apr 17, 2025 am 12:23 AM

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

说明InnoDB重做日志和撤消日志的作用。 说明InnoDB重做日志和撤消日志的作用。 Apr 15, 2025 am 12:16 AM

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

MySQL:世界上最受欢迎的数据库的简介 MySQL:世界上最受欢迎的数据库的简介 Apr 12, 2025 am 12:18 AM

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

MySQL的位置:数据库和编程 MySQL的位置:数据库和编程 Apr 13, 2025 am 12:18 AM

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

为什么要使用mysql?利益和优势 为什么要使用mysql?利益和优势 Apr 12, 2025 am 12:17 AM

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

MySQL与其他编程语言:一种比较 MySQL与其他编程语言:一种比较 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

MySQL:从小型企业到大型企业 MySQL:从小型企业到大型企业 Apr 13, 2025 am 12:17 AM

MySQL适合小型和大型企业。1)小型企业可使用MySQL进行基本数据管理,如存储客户信息。2)大型企业可利用MySQL处理海量数据和复杂业务逻辑,优化查询性能和事务处理。

MySQL索引基数如何影响查询性能? MySQL索引基数如何影响查询性能? Apr 14, 2025 am 12:18 AM

MySQL索引基数对查询性能有显着影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

See all articles