Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3693554
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-11-23 22:05:47

内存不足、tcp缓冲区(应该是这个意思)空间不足都有可能导致tns-12560
这次又是新情况

一个长期使用的windows 2008 64位系统安装11.2.0.3 数据库,忽然应用报连接不上了,哪也没动。
上去检查数据库,实例状态正常,告警日志正常。

检查侦听状态


尝试用户连接

方法是开启跟踪诊断连接
打开net manager,找到 local ->profile->general,然后开启客户端的support级别诊断(下图仅是示例)


重新发起连接后,在adr的base目录下会生成跟踪trc文件,文件名类似以下:

打开trc文件看看其中的报错信息,从上往下搜索12560:

看不懂,就继续搜,下面还会出现:

根据这个去MOS上匹配,看看有什么类似的案例。

不幸的是,搜索windows err code: 12564并没有什么发现,回看lsnrctl 的报错,输出windows error 55,这个有些眼熟,检查当前连接。执行 netstat -ano,有很多输出,看tcp的端口:

端口几乎耗尽(最大应该是65536个)。

原因是:
当Windows2008R2系统运行时间超过497天,TCP/IP的网络资源(端口)就不会再自动释放,在运行一段时间后,本机的网络资源就会被全部用光。这样就会造成系统中任何需要网络资源的组件都无法正常工作。

解决方法:
打补丁永久解决,或者重启操作系统临时解决。
windows补丁见 support.microsoft.com/kb/2553549

参考:
 support.huawei.com/enterprise/zh/knowledge/EKB1000046814
 download.csdn.net/download/haolong568/12014368

再补充两句:
 诊断windows平台上的问题时,注意以管理员身份运行相关cmd窗口,避免一些低级错误。
 这个报错执行lsnrctl stat偶尔不会报错(说明有端口释放了)
 虽然开启连接跟踪没发现有价值信息,但也是一种重要方法,如果不管用就得多角度测试
 这个问题之前遇到过类似的也是windows error:55,参见 blog.chinaunix.net/uid-20687159-id-5845305.html,处理起来就不太陌生了。
 这次 netstat -ano 的输出证实了这个问题。
 重启侦听不管用,重启网卡不知道是否会释放,命令如下:
  netsh interface set interface "本地连接" disable 
  netsh interface set interface "本地连接" enable
  最好放在一个bat里用管理员执行
不知道是否可以通过注册表修改配置(参考2的链接)能够释放端口。
阅读(1585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~