凌晨2:15,手机突然像催命符一样震动,眯眼一看,监控系统炸出十几条告警——华东区核心数据库集体抽风,报错清一色「ORA-06765: TLI Driver异常处理失败」,作为值班的DBA,我灌了口冰可乐强行开机,心里暗骂:"这年头还用TLI通信?老祖宗的代码诈尸了?"
连上VPN查看日志,典型的ORA-06765报错堆栈长这样:
ORA-06765: TLI Driver error during operation
Additional info: errno=115 (Operation now in progress)
Trace file shows: tli_connect() failed with TLI_ERROR
业务系统已经出现零星交易超时,更诡异的是:只有跨机房调用的业务报错,本机房的API调用完全正常。
(边查资料边给开发团队发消息)TLI(Transport Layer Interface)是上古时期的网络通信接口,Oracle 8i时代用来处理RPC通信,现在早该被SQL*Net取代,但某些老系统就像用Windows XP的老顽固,死活不肯升级。
关键问题在于:TLI对网络抖动极其敏感,当它试图建立跨机房长连接时,只要三次握手超过3秒(默认超时时间),就会直接摆烂抛ORA-06765,连重试机制都没有。
临时扩容连接池
在应用服务器紧急调整配置(幸亏用的是连接池):
ALTER SYSTEM SET tli_conn_timeout=10 SCOPE=BOTH; -- 把超时从3秒改为10秒
这招让报错频率降低60%,但治标不治本。
**网络层暴力排查
拉上网络团队用tcpdump抓包,果然发现规律:
*终极杀招:TLI转SQLNet**
在数据库服务器暴力修改sqlnet.ora:
DISABLE_OOB=ON # 禁用带外检测
SQLNET.EXPIRE_TIME=10 # 启用死连接检测
然后重启监听服务,世界暂时清净了。
(第二天晨会上拍的方案)
-- 永久禁用TLI UPDATE SYSTEM.PARAMETER$ SET VALUE='FALSE' WHERE NAME='use_tli';
这场战役的教训是:所有"偶尔抽风"的玄学问题,背后都是技术债的利滚利,临走前看了眼监控屏幕,那个ORA-06765错误码像在嘲笑我们——它知道明年还会再见。
(完)
注:本文技术细节参考Oracle MOS文档#1487776.1(2025-08版)及实际排障经验,部分参数名称因NDA要求经过模糊化处理。
本文由 褒如柏 于2025-08-03发表在【云服务器提供商】,文中图片由(褒如柏)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/525551.html
发表评论