Oracle11g 密码延迟认证导致library cache lock的情况分析
在 Oracle 11g 中,为了提升安全性,Oracle 引入了『密码延迟验证』的新特性。这个特性的作用是,如果用户输入了错误的密码尝试登录,那么随着登录错误次数的增加,每次登录前验证的时间也会增加,以此减缓可能对于数据库重复的口令尝试攻击。
但是对于正常的系统,由于口令的更改,可能存在某些被遗漏的客户端,不断重复尝试,从而引起数据库内部长时间的 Library Cache Lock的等待,这种情形非常常见。
如果遇到这一类问题,可以通过Event 28401关闭这个特性,从而消除此类影响,以下命令将修改设置在参数文件中:
ALTER SYSTEM SET EVENT =
'28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
出现这类问题非常典型的AWR报告呈现如下,首先在 TOP 5 中,你可能看到显著的 Library Cache Lock 的等待 ,如果用sql查等待时间,则username列为空,以下范例来自11.2.0.3.0版本的真实情况:

在这类情况下,时间模型 - Time Model 中会显示如下指标,其中 connection management call elapsed time 占据了主要的DB Time,这个等待直接表明是在建立数据库连接时产生的:

这类问题,在Oracle的11g中是常见和确定的,在MOS上可以找到相应的记录:High 'library cache lock' Wait Time Due to Invalid Login Attempts(1309738.1)此外Oracle 11g开启了密码大小写验证,如果从Oracle 10g升级过来,需要特别的当心这个变化,通过初始化参数SEC_CASE_SENSITIVE_LOGON 可以来控制这个特性。
下面是一个案例:网上摘取下来别人的案例
1,问题来源
以前遇到了问题修改了用户名密码后,发现用新密码登录被hang住的情况,然后整个公司的oa系统彻底瘫痪了,详细状况见以前的记录。
最近学习了oracle11g的新特性密码延迟,才明白问题所在是由于密码延迟导致。
大概情况是:从oracle11g开始,如果用户输入了错误的密码登录,那么随着登录错误次数的增加,每次登录前等待验证的时间也会增加,本意上是为了保护数据库被恶意登录的时候消耗太多db资源导致数据库消耗过高导致数据库服务器出问题,但是这里也引发了问题,如果使用错误密码登录过多,则会影响该用户的正常登录,也就是说密码有验证延迟导致你输入正确的密码登录也需要等待很久。给使用人员的体验就是数据库hang住了(其实你使用其它用户操作数据库完全正常)
2,案例演示
Oracle版本是11g分支11.2.0.1.0:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as timdba@A_VM128
SQL>
|
设置时间显示: SQL> set time on; 07:41:57 SQL> conn timdba/timgood; Connected. 07:42:48 SQL> conn timdba/t;#开始尝试错误密码登录 ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. 07:42:49 SQL> conn timdba/t; #第1次错误登录消耗时间1秒 ERROR: ORA-01017: invalid username/password; logon denied 07:42:51 SQL> conn timdba/t; # 第2次错误登录消耗时间2秒 ERROR: ORA-01017: invalid username/password; logon denied 07:42:52 SQL> conn timdba/t; # 第3次错误登录消耗时间1秒 ERROR: ORA-01017: invalid username/password; logon denied 07:42:54 SQL> conn timdba/t; # 第4次错误登录消耗时间2秒 ERROR: ORA-01017: invalid username/password; logon denied 07:42:57 SQL> conn timdba/t; #第5次错误登录消耗时间3秒 ERROR: ORA-01017: invalid username/password; logon denied 07:43:02 SQL> conn timdba/t; # 第6次错误登录消耗时间5秒 ERROR: ORA-01017: invalid username/password; logon denied 07:43:07 SQL> conn timdba/t; # 第7次错误登录消耗时间5秒 ERROR: ORA-01017: invalid username/password; logon denied 07:43:13 SQL> conn timdba/t; # 第8次错误登录消耗时间6秒 ERROR: ORA-01017: invalid username/password; logon denied 07:43:20 SQL> conn timdba/t;# 第9次错误登录消耗时间7秒 ERROR: ORA-01017: invalid username/password; logon denied 07:43:28 SQL> 07:43:29 SQL> conn timdba/timgood; Connected. 07:43:40 SQL> |
大家可以看到第4次,第5次开始,错误登录验证时间越来越长了。基本每次都延迟多一秒,而后面即使输入了正确密码,也会延迟十几秒了。
而在测试过程中,一旦输入正确密码,验证成功过后,这个错误延时就会清0,从0开始重新计算数字了:
|
08:15:30 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:15:34 SQL> conn timdba/timgood; Connected. 08:15:37 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. 08:15:39 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:15:40 SQL> |
大家进一步扩散下思维,这只是单个session做测试的,如果是线上环境的话,成千上万个会话过来,如果密码都错误了,一起延时的话,按照一个操作多延迟一秒来算,基本要延迟1000秒了,也就是半个小时你登录界面卡在哪里了,这样给客户的体验就是输入了正确密码,结果点击了登录按钮,就卡住了,死活不动弹了,服务器瘫痪了,也就意味着应用系统hang住了。
3,新特性是双刃剑
Oracle的任何一个新特性都能带来性能上的提升和安全上的进一步保证,但是毕竟oracle也只是一个软件software而已,是software就会有bug,甚至被别人利用攻击了。
oracle在11g发布后的几个小版本中,没有给出彻底屏幕密码延迟的方法,但是oracle有强大的其它辅助功能,可以通过设置event事件来处理掉。
4,通过设置Event屏幕密码延迟
这里一般通常设置28401就足够了,如果遇到其它特殊情况,也可以再设置一下,接下来通过设置EVENTS 28401来实现屏蔽密码延迟验证:
ALTER SYSTEM SET EVENT = '28401 TRACE NAMECONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
alter system set event="10949 TRACENAME CONTEXT FOREVER:28401 trace name context forever, level 1" scope=spfile;
|
SQL> set time on; 08:56:22 SQL> ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE; System altered. 08:56:27 SQL> create pfile from spfile; File created. 08:56:29 SQL> |
之后重启oracle数据库生效了。
|
08:56:44 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. 08:57:05 SQL> startup; ORACLE instance started. Total System Global Area 835104768 bytes Fixed Size 2217952 bytes Variable Size 545261600 bytes Database Buffers 281018368 bytes Redo Buffers 6606848 bytes Database mounted. Database opened. 08:57:46 SQL> |
再次验证错误密码延迟验证,可以看到几乎没有任何延迟了:
|
08:58:28 SQL> conn timdba/timgood; Connected. 08:58:33 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. 08:58:37 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:38 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:39 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:39 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:40 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:41 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied 08:58:42 SQL> conn timdba/t; ERROR: ORA-01017: invalid username/password; logon denied |
Oracle11g 密码延迟认证导致library cache lock的情况分析的更多相关文章
- Library cache lock/pin详解
Library cache lock/pin 一.概述 ---本文是网络资料加metalink 等整理得来一个实例中的library cache包括了不同类型对象的描述,如:游标,索引,表,视图,过程 ...
- 外键约束列并没有导致大量建筑指数library cache pin/library cache lock
外键约束列并没有导致大量建筑指数library cache pin/library cache lock 清除一个100大数据表超过一百万线,发现已经运行了几个小时: delete B001.T_B1 ...
- rac数据库默认sql tuning advisor,导致大量library cache lock
rac数据库默认sql tuning advisor,导致大量library cache lock 问题现象:客户反映周六周日固定十点钟,一个程序会特别慢(大概10分钟),平时1到2秒.查看当时的日志 ...
- 11G 新特性之 密码延迟认证
11G 新特性之 密码延迟认证 11G 新特性之 密码延迟认证 Table of Contents 1. 特性简述 2. 特性潜在引发问题 3. 关闭特性 1 特性简述 为了防止用户密码的暴力破解,从 ...
- 关于library cache lock和row cache lock产生的常见原因
这两个等待事件其实很少出现在top5列表中,一般都没什么印象,在此整理记录以便以后查阅. 常见的library cache lock产生的原因在<高级OWI与Oracle性能调查>这本书和 ...
- library cache lock和cursor: pin S wait on X等待
1.现象: 客户10.2.0.4 RAC环境,出现大量的library cache lock和cursor: pin S wait on X等待,经分析是由于统计信息收集僵死导致的.数据库在8点到9点 ...
- Library cache lock 故障解决一例
今天收到同事电话,说是数据库中一张名为acct_balance进行操作是奇慢,第一反映是不是扫行计划有问题,结果我错了,现将过程记录下来. 用pl/sql连上数据库情况:1.对acct_balance ...
- 如何使用event 10049分析定位library cache lock and library cache pin
Oracle Library Cache 的 lock 与 pin 说明 一. 相关的基本概念 之前整理了一篇blog,讲了Library Cache 的机制,参考: Oracle Library c ...
- impdp时卡住,DW等待library cache lock
同事反映impdp时在SCHEMA_REPORT/TYPE/TYPE_SPEC步骤卡住,1个多小时后也没有响应, 查下v$session: select program,sid, event,bloc ...
随机推荐
- 201621123001 《java程序设计》 第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之s间的联系.步骤如下: 1.1 写出 ...
- python中的循环以及,continue和break的使用
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- Appium Python API
1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的 ...
- Oracle 12c 容器讲解
Oracle 12c一个重要新特性是插接式数据库. 插接式数据库由一个使用 CDB(Container Database)选项创建的容器数据库和一个或多个 PDB(Pluggable Database ...
- jetty域证书更新
服务器:centos6.6 1.从正确的.pfx文件中导出.pem认证文件 #openssl pkcs12 -in example.pfx -nodes -out server.pem pfx文件可以 ...
- HDU 4463 Outlets(最小生成树给坐标)
Problem Description In China, foreign brand commodities are often much more expensive than abroad. T ...
- 初识 数据库及Oracle数据库
一.数据库基本概念二.数据库举例三.Oracle特点四.Oracle版本五.安装Oracle注意事项六.SQL简介七.Select语句 一.数据库基本概念 数据库(Database,DB)数据库管理系 ...
- 一种绕过PTRACE反调试的办法
Linux 系统gdb等调试器,都是通过ptrace系统调用实现.Android加固中,ptrace自身防止调试器附加是一种常用的反调试手段. 调试时一般需要手工在ptrace处下断点,通过修改ptr ...
- 创建一个版本库,把文件夹用Git管理起来
创建一个文件夹,把这个文件夹用Git管理起来,那么这个文件夹的改变都可以被Git跟踪到,当然也可以将Git中的文件还原到某一个时刻. 首先创建一个空的目录,然后将空的目录由Git来管理 1.建立一个文 ...
- get新技能:上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误
为什么我上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误 为什么我上传了 flv 或 MP4 文件到服务器,可输入正确地址通过协议来访问总是出现 “无法找到该 ...