Oracle 19c Failed Logon Delay问题分析与优化
1. Oracle 19c的Failed Logon Delay问题解析最近在Oracle 19c数据库的性能调优过程中我发现一个有趣的现象Failed Logon Delay失败登录延迟竟然在AWR报告的Top 5 Timed Events中排名第二。这个发现让我很惊讶因为通常我们会更关注像db file sequential read、log file sync这类常见的等待事件。那么为什么Failed Logon Delay会成为性能瓶颈它又该如何解决呢Failed Logon Delay是指当用户尝试登录Oracle数据库但失败时系统故意引入的延迟时间。这个机制主要是为了防止暴力破解攻击——如果有人尝试用大量不同的密码来猜测账户密码这个延迟会让攻击变得非常缓慢。在Oracle 19c中这个延迟默认是3秒看起来不长但如果你的应用有频繁的连接尝试特别是连接池配置不当的情况这个延迟就会累积成严重的性能问题。2. 为什么Failed Logon Delay会进入Top 22.1 连接池配置不当最常见的原因是应用连接池配置不合理。许多开发团队会设置过大的初始连接数或过高的最大连接数当应用启动时会一次性创建大量连接。如果数据库此时负载较高或者网络有问题部分连接可能会失败触发Failed Logon Delay。我曾经遇到一个案例一个Java应用配置了初始连接数为50最大连接数为200。当应用重启时50个连接同时尝试建立由于数据库服务器CPU当时已经接近90%使用率其中15个连接因超时而失败导致总共45秒的延迟15次×3秒。这直接影响了应用的启动时间。2.2 密码过期或错误另一个常见原因是密码问题。当用户密码过期或应用配置了错误的密码时每次连接尝试都会触发Failed Logon Delay。特别是在微服务架构中如果多个服务使用同一数据库账户而密码变更没有同步到所有服务这个问题会更加严重。2.3 网络问题导致连接中断不稳定的网络也可能导致连接在认证阶段失败从而触发延迟。我曾经排查过一个性能问题最终发现是数据库服务器和应用服务器之间的网络设备偶尔会丢弃TCP包导致认证过程失败。3. 如何诊断Failed Logon Delay问题3.1 检查AWR报告首先查看AWR报告的Top 5 Timed Events部分。如果看到Failed Logon Delay排名靠前就确认了这个问题的存在。SELECT * FROM ( SELECT event, total_waits, time_waited_micro/1000000 time_waited_secs, ROUND(time_waited_micro*100/SUM(time_waited_micro) OVER(),2) pct FROM dba_hist_system_event WHERE snap_id (SELECT MAX(snap_id) FROM dba_hist_snapshot) ORDER BY time_waited_micro DESC ) WHERE ROWNUM 5;3.2 检查失败登录尝试查询数据库的审计日志或失败登录记录SELECT username, os_username, userhost, terminal, TO_CHAR(ntimestamp#, YYYY-MM-DD HH24:MI:SS) timestamp, returncode FROM sys.aud$ WHERE returncode ! 0 ORDER BY ntimestamp# DESC;3.3 监控实时会话使用以下查询监控当前的失败登录尝试SELECT program, status, event, seconds_in_wait FROM v$session WHERE event Failed Logon Delay;4. 解决方案与优化建议4.1 调整连接池配置对于应用连接池建议减小初始连接数改为按需增长设置合理的连接验证查询validationQuery配置适当的连接超时和获取超时实现连接重试机制但要有适当的退避策略以Tomcat JDBC连接池为例推荐配置spring.datasource.tomcat.initial-size5 spring.datasource.tomcat.max-active50 spring.datasource.tomcat.test-on-borrowtrue spring.datasource.tomcat.validation-querySELECT 1 FROM DUAL spring.datasource.tomcat.validation-interval300004.2 调整Failed Logon Delay参数虽然不建议完全禁用这个安全特性但在受控的内网环境中可以适当减小延迟时间ALTER SYSTEM SET sec_protocol_error_further_actionDELAY,3 SCOPESPFILE; ALTER SYSTEM SET sec_protocol_error_trace_actionLOG SCOPESPFILE;修改后需要重启数据库生效。注意将延迟设为0会禁用这个保护机制不建议在生产环境这样做。4.3 密码管理最佳实践避免在多个应用间共享数据库账户实施密码轮换时确保所有相关应用同步更新考虑使用Oracle Wallet集中管理密码设置合理的密码过期策略避免大量密码同时过期4.4 网络优化确保数据库服务器和应用服务器之间的网络稳定检查防火墙设置确保不会干扰数据库连接考虑使用TCP keepalive防止连接中断5. 高级调优技巧5.1 使用服务指标监控配置Oracle服务指标来专门监控登录失败BEGIN DBMS_SERVER_ALERT.SET_THRESHOLD( metrics_id DBMS_SERVER_ALERT.LOGONS_CURRENT, warning_operator DBMS_SERVER_ALERT.OPERATOR_GE, warning_value 50, critical_operator DBMS_SERVER_ALERT.OPERATOR_GE, critical_value 100, observation_period 1, consecutive_occurrences 3, instance_name NULL, object_type DBMS_SERVER_ALERT.OBJECT_TYPE_SYSTEM, object_name NULL); END; /5.2 实现自定义审计创建更精细的审计策略捕获失败登录的详细信息AUDIT CREATE SESSION WHENEVER NOT SUCCESSFUL;5.3 使用FAN事件快速失败对于RAC环境配置Fast Application Notification (FAN)可以更快地检测和响应连接问题ALTER SYSTEM SET remote_listener(ADDRESS(PROTOCOLTCP)(HOSTscan-name)(PORT1521)) SCOPEBOTH;6. 实际案例分析6.1 案例一微服务架构下的连锁反应一个采用微服务架构的电商平台共有20个服务使用同一个数据库账户。当密码过期时所有服务开始不断尝试重新连接导致数据库服务器负载激增。解决方案是为每个服务创建单独的数据库账户实现集中化的密码管理在应用端添加密码过期提前通知机制6.2 案例二连接池配置不当一个报表系统每天凌晨生成大量报表连接池配置为初始100个连接。当数据库维护时这100个连接全部失败触发了300秒的延迟。优化方案将初始连接数降为10实现指数退避的重试机制添加维护窗口检测在维护期间暂停报表生成7. 预防措施与长期规划定期审查AWR报告中的等待事件建立数据库连接健康监控仪表盘实施自动化密码轮换机制定期进行连接压力测试考虑使用连接代理如Oracle Connection Manager管理连接通过以上分析和解决方案我们不仅解决了Failed Logon Delay进入Top 5的问题还提升了整个系统的安全性和稳定性。记住数据库性能调优往往需要综合考虑安全、性能和可用性找到最适合你业务场景的平衡点。

相关新闻

四川职业学校学工信息管理系统选型指南 贴合本地政策不踩坑

四川职业学校学工信息管理系统选型指南 贴合本地政策不踩坑

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

2026/10/24 23:55:00 阅读更多 →
Windows系统部署Elastic Stack 8.x:从Java环境配置到Kibana连接实战指南

Windows系统部署Elastic Stack 8.x:从Java环境配置到Kibana连接实战指南

1. 项目缘起:为什么要在Windows上部署Elastic Stack最近在帮一个做数据分析的朋友搭建本地开发环境,他的需求很明确:想用Elasticsearch和Kibana来处理和分析一批日志数据,但主力机器是Windows系统。他最初的想法是直接上云服务或者…

2026/10/25 23:11:17 阅读更多 →
学工系统里学生请假审批怎么弄?手机上几步就能搞定

学工系统里学生请假审批怎么弄?手机上几步就能搞定

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

2026/10/30 1:15:02 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/31 0:19:11 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/31 10:20:19 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/31 10:20:23 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/31 0:59:28 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/31 10:30:19 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/31 9:29:43 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 17:32:24 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 11:00:40 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 0:09:01 阅读更多 →