语言
<< 返回文章列表

三月数据库技术通讯 | Oracle配置DCD避免会话被防火墙强制断开

2020年4月1日
赵靖宇
198

下载链接:https://www.modb.pro/doc/3193 


每月关26 页数据库技术干货,汇总一个月数据库行业热点事件、新的产品特性,包括重要数据库产品发布、警报、更新、新版本、补丁等。


亲爱的读者朋友:

为了及时共享行业案例,通知共性问题,达成共享和提前预防,以及共同学习国产数据库内容,我们整理和编辑了《云和恩墨技术通讯》,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考。同时,我们也希望能够将热点事件、新的产品特性及其他有价值的信息聚集起来,为您提供具有前瞻性的支持信息,保持对于当前最新的数据库新闻和事件的了解,其中包括重要数据库产品发布、警报、更新、新版本、补丁等,以及对国产数据库的一些突出能力的总结。

此文档原本是我们为重要客户整理的经典案例,现限时开放下载,希望可以帮助到读者朋友们。


目录


  • 新闻:2020年3月数据库流行度排行:疫情烽烟四起,数据价值为王

  • 警示:MySQL innobackupex在主库上备份导致数据库被锁

  • 警示:12c新特性Statistics Gathering for Bulk Loads导致执行计划异

  • 经验:X$表太大导致AWR无法正常生成的案例分析

  • 经验:Oracle配置DCD避免会话被防火墙强制断开

  • 经验:11gR2 只读备库ORA-04021导致备库Crash问题

  • 总结:IBM HTTP SERVER ssl配置及常见问题总结

  • 公告:墨天轮新增“订阅微信提醒”功能


本文出自《云和恩墨技术通讯-2020.03》,下载原文地址:https://www.modb.pro/doc/3193 

另:在“数据和云"公众号后台回复“云和恩墨技术通讯”即可查看并下载往期技术通讯集锦。

以下摘录于技术通讯其中一篇,希望对大家有帮助。


经验: Oracle配置DCD避免会话被防火墙强制断开-赵靖宇



■ 问题描述


客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113。


■ 问题分析


登上环境查看监听日志发现连接的IP和数据库IP不是同一网段,故询问中间是否有防火墙设备,得到肯定的答复后,再结合实际的现象,基本也就确认是由于防火墙默认强制断开一段时间内(这里也就是半小时)都是空闲状态的会话,然后会话再做操作时就会发现原连接已经被断开,报错0RA-3113,然后只能重连。


防火墙涉及其他部门管理,协调比较麻烦。还好Oracle有DCD (Dead Connection Detection) 这个功能特性,主要就是设置-一个时间比如10分钟,那么每隔10分钟Oracle就会发-个空包给连接会话的客户端,防火墙发现会话变为活跃就会重新计时,这样也可以间接解决这个问题。


■ 故障处理


配置DCD的方法非常简单,就是在监听对应的sqlnet.ora配置文件中添加1行内容:


sqlnet.expire time=10


含义可以从sample示例中找到说明:


########################

#sqlnet.expire_time = 10

########################

#Possiblevalues 0-arnyvalid positive integer! (inminutes)


#Default: 0 minutes


#Recommendedvalue: 10 minutes


#Purpose: Indicates thetime intervalto send a probetoveriftytheclient session is alive (this is usedto reclaim watseful


resources on adeadclient)


#Supportedsince: v2.1


设置完成后要重启监听,或者reload监听生效。


Isnrctl reload


但这只对新的连接有效,对于已经存在的连接是没作用的,针对这些连接必须要杀掉重连才可以,或者干脆等到他们碰到ORA-3113, 再进行重连。


在客户反馈的数据库均配置好DCD,reload 监听,通知客户测试,告知新的连接才有效。


最终经过客户一下午的观察,确认之前反馈的问题已经得到解决。


■ 故障总结


防火墙空闲连接的超时配置可能导致数据库空闲会话被断掉。


■ 后续建议


对于需要通过防火墙连接Oracle数据的情况,尽量协调防火墙管理者调整相应策略。而对于空闲超时的情况,也可通过配置DCD (Dead Connection Detection)来解决。