关于tns连接超时问题

ddd11326 2016-02-18 10:58:02
最近出现这么一个奇怪的情况,下面的客户机连接服务器的时候偶尔会出现TNS连接超时的情况,一上午大概出现5-6次,主要集中在上午的业务运行高峰期,查了一下oracle的连接数,大概是700-800之间,当时oracle数据库最大连接数设置的是2000,感觉也不是这个问题,比较奇怪的是改一下内网的IP可以稳定一下,大概可能稳定2-3天吧,然后就又开始出现TNS连接超时的情况,有没有大神指教一下。
...全文
905 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkzhong 2016-03-09
  • 打赏
  • 举报
回复
1.tnsping ip地址(或者是服务器的实例名SID)如果报“TNS-12535:操作超时”,可能是服务器端防火墙 没有关闭 2.netstat -na 查看1521端口是否关闭,如果关闭Windows XP中的防火墙设置中将1521端口设为例外 3.lsnrctl status lsnrctl是listener-control 监听器的缩写,查看监听的状态
PCCYC 2016-02-25
  • 打赏
  • 举报
回复
客户端改IP能正常访问数据库,证明数据库这边没什么问题,问题应该还是出在客户端,第一客户端开发时没注意大数据性能问题,也可能是网络瓶颈。
引用 11 楼 ddd11326 的回复:
[quote=引用 10 楼 codeck 的回复:] 我想知道为什么你改了数据库IP还能正常通讯?
我没改数据库IP 改的客户端IP[/quote]
ddd11326 2016-02-24
  • 打赏
  • 举报
回复
引用 10 楼 codeck 的回复:
我想知道为什么你改了数据库IP还能正常通讯?
我没改数据库IP 改的客户端IP
PCCYC 2016-02-24
  • 打赏
  • 举报
回复
我想知道为什么你改了数据库IP还能正常通讯?
ddd11326 2016-02-24
  • 打赏
  • 举报
回复
引用 8 楼 blackfriday13 的回复:
[quote=引用 7 楼 ddd11326 的回复:] [quote=引用 6 楼 blackfriday13 的回复:] win2008上同时跑着数据库和web应用吗?还是分开的
没有web应用,因为是主服务器数据比较重要,web接口是通过另外一个服务器连接的[/quote]改一下内网的IP可以稳定一下,是指改的web服务器的内网ip,还是数据库服务器的?[/quote] 客户端的内网IP,前几天找公司DBA帮忙分析了下数据日志, 冷DBA 2016-02-23 10:54:41 从数据库的监听日志,看这个超时是因为在创建数据库连接时 冷DBA 2016-02-23 10:54:51 因为防火墙提前关闭了端口 冷DBA 2016-02-23 10:55:06 导致建立TCP连接的3步握手没有完成 但是这边的电脑都是内网机器,是不走硬件防火墙的,外网连接的电脑才走,服务器本身系统的防火墙也没有开启。
blackfriday13 2016-02-22
  • 打赏
  • 举报
回复
引用 7 楼 ddd11326 的回复:
[quote=引用 6 楼 blackfriday13 的回复:] win2008上同时跑着数据库和web应用吗?还是分开的
没有web应用,因为是主服务器数据比较重要,web接口是通过另外一个服务器连接的[/quote]改一下内网的IP可以稳定一下,是指改的web服务器的内网ip,还是数据库服务器的?
ddd11326 2016-02-22
  • 打赏
  • 举报
回复
引用 6 楼 blackfriday13 的回复:
win2008上同时跑着数据库和web应用吗?还是分开的
没有web应用,因为是主服务器数据比较重要,web接口是通过另外一个服务器连接的
blackfriday13 2016-02-22
  • 打赏
  • 举报
回复
win2008上同时跑着数据库和web应用吗?还是分开的
ddd11326 2016-02-21
  • 打赏
  • 举报
回复
引用 2 楼 LHDZ_BJ 的回复:
很可能的原因是你们的网关或防火墙之类的地方,设置了针对oracle库的空闲连接超时断开,如果可以,把这个值设置大点。
没有超时,一般出现这种问题都是在上午业务量比较集中的时候[/quote] 明白你的意思,排查一下呢,看看网关,OS和数据层面有没有空闲超时设置。[/quote] 呃....网关我还明白,其它两个不太明白
lhdz_bj 2016-02-19
  • 打赏
  • 举报
回复
引用 3 楼 ddd11326 的回复:
[quote=引用 1 楼 wmxcn2000 的回复:] 是 linux 服务器吗?信号量设置的是多少 ?
WINSERVER 2008
引用 2 楼 LHDZ_BJ 的回复:
很可能的原因是你们的网关或防火墙之类的地方,设置了针对oracle库的空闲连接超时断开,如果可以,把这个值设置大点。
没有超时,一般出现这种问题都是在上午业务量比较集中的时候[/quote] 明白你的意思,排查一下呢,看看网关,OS和数据层面有没有空闲超时设置。
ddd11326 2016-02-19
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
是 linux 服务器吗?信号量设置的是多少 ?
WINSERVER 2008
引用 2 楼 LHDZ_BJ 的回复:
很可能的原因是你们的网关或防火墙之类的地方,设置了针对oracle库的空闲连接超时断开,如果可以,把这个值设置大点。
没有超时,一般出现这种问题都是在上午业务量比较集中的时候
lhdz_bj 2016-02-18
  • 打赏
  • 举报
回复
很可能的原因是你们的网关或防火墙之类的地方,设置了针对oracle库的空闲连接超时断开,如果可以,把这个值设置大点。
卖水果的net 2016-02-18
  • 打赏
  • 举报
回复
是 linux 服务器吗?信号量设置的是多少 ?
TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 文章转自:http://www.luocs.com/archives/464.html 此文版权归作者 – yaogang所有,转载请注明yaogang©www.luocs.com。 Luocs说:这是我一个朋友的一个监听器问题解决案例,这是昨天发生的事情,我一直跟朋友一起Troubleshooting,折腾了半天最后是BUG所致。再次汗颜,Windows平台惹不起啊!好,那么下面开始分享我朋友的案例! 环境描述: OS : Windows Server 2008 64Bit (做了HA) DB : 11.1.0.7.0 排错过程: 前天应用不能访问数据库了 (后台应用能访问数据库),故障发生。 马上登录到服务器里查看监听状态,发现有TNS-12541 ,TNS-12560等错误 Luocs补充:我跟朋友要了错误代码,但他没有保存,就直接贴图。 从计算器的管理 –> 服务选项 –> 检查oracle 监听服务程序,发现该服务已经停止。 手动把监听服务启动,这时候服务状态上显示为已启动,但在CMD窗口执行lsnrctl status的时候依然返回错误信息: C:\>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.1.0.7.0 - Production on 12-11月-2012 18:1 8:32 Copyright (c) 1991, 2008, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.203.218)(PORT=1521))) TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 64-bit Windows Error: 61: Unknown error 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) 过段时间回显非常慢。 然后我检查了下告警日志,大量的ora错误 Fatal NI connect error 12170. VERSION INFORMATION: TNS for 64-bit Windows: Version 11.1.0.7.0 - Production Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production Time: 12-11月-2012 15:23:33 Tracing not turned on. Tns error struct: ns main err code: 12535 TNS-12535: TNS: 操作超时 ns secondary err code: 12560 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 Client address: ORA-609 : opiodr aborting process unknown ospid (4116_6104) 这时候朋友怀疑是不是监听器配置问题,就把原先的监听器删除重建了下,问题依然。 网上有个解决TNS-12535错误的案例,平台和版本都很类似,如下: 1、在 sqlnet.ora文件中 增加如下行: DIAG_ADR_ENABLED = OFF 2、在listener.ora文件中增加如下行: DIAG_ADR_ENABLED_ = OFF 如何监听是listener时,则前面的名称为:DIAG_ADR_ENABLED_LISTENER = OFF 3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动. 4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!! 但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这现象告诉了Luocs。 过了一会儿,Luocs回应是Oracle一个BUG,BUG号为9879101 : THE CONNECT THROUGH LISTENER WAS SLOW WHEN LISTNER LOG GROWED 4GB。 Luocs还提供了MOS上一篇文章,ID 1319797.1 : WINDOWS: Listener Hangs & Lsnrctl Commands Are Slow or Hang,里面给出了解决方法: You can solve this problem by deleting the large listener in $ORACLE_BASE\diag\tnslsnr\\listener\trace\.log 1) Stop the listener process using the command line or Control Panel Service. 2) Delete the log file(s) that are at or approaching the 4G size limit at this location: $ORACLE_BASE\diag\tnslsnr\\listener\trace\.log 3) Issue any lsnrctl command and you will see a new listener.log in its place under: $ORACLE_BASE\diag\tnslsnr\\listener\trace\ Since ADR Diagnostics are enabled for this listener these steps cannot be done dynamically using the lsnrctl utility. e.g. LSNRCTL>set log_file mylog Will yield: TNS-01251: Cannot set trace/log directory under ADR. However, it is possible to disable the flat file listener logging using the following commands: LSNRCTL>set current_listener LSNRCTL>set log_status OFF LSNRCTL>save_config 我就按照以上说明如下进行: 1)LSNRCTL进入交互模式 2)执行set current_listener LISTENER 3)set log_status off 4)stop 停止监听器 5)手工删除ADR指定的监听日志路径下的listener.log文件 6)start重启监听器 7)status查看状态 到此问题解决。

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧