oracle连接超时 时好时坏,关于Oracle连接超时的问题

测试环境ORACLE 11.2.0.

如果连接池设置单个连接闲置时间大于数据库连接超时时间,则连接池中的连接发出数据请求时会出现Connect timeout occurred错误,

这是由于连接超时所产生的问题,在10.2.0.1.0版本中sqlnet.inbound_connect_timeout参数默认为60秒:

cc74aafb22787b3b1ed262f272541deb.png

/*

*时间:2009-03-010

*环境:AIX5.3   Oracle10g

*WARNING: inbound connection timed out (ORA-3136)连接超时问题

*/

1、alter_SID.log日志:aaa

Mon Mar  9 02:18:40 2009

ksvcreate: Process(q002) creation failed

Mon Mar  9 02:32:29 2009

WARNING: inbound connection timed out (ORA-3136)

Mon Mar  9 02:33:02 2009

WARNING: inbound connection timed out (ORA-3136)

Mon Mar  9 02:33:19 2009

WARNING: inbound connection timed out (ORA-3136)

2、sqlnet.log日志

Fatal NI connect error 12170.

VERSION INFORMATION:

TNS for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production

TCP/IP NT Protocol Adapter for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production

Oracle Bequeath NT Protocol Adapter for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production

Time: 09-MAR-2009 02:32:29

Tracing not turned on.

Tns error struct:

ns main err code: 12535

TNS-12535: TNS

9d24499b1c0dd8fc18b5bd7f37dfe2c2.gifperation timed out

ns secondary err code: 12606

nt main err code: 0

nt secondary err code: 0

nt OS err code: 0

Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.171.4.201)(PORT=3663))

3、参考官方说明关于该警告的说明:

Note:465043.1

The "WARNING: inbound connection timed out (ORA-3136)" in the alert log indicates that the client was not able to complete it's authentication within the period of time specified by parameter SQLNET.INBOUND_CONNECT_TIMEOUT.

You may also witness ORA-12170 without timeout error on the database server sqlnet.log file.

This entry would also have the clinet address which failed to get authenticated. Some applications or JDBC thin driver applications may not have these details.

可能的原因:

1.网络攻击,例如半开连接攻击

Server gets a connection request from a malicious client which is not supposed to connect to the database ,

in which case the error thrown is the correct behavior. You can get the client address for which the error was thrown via sqlnet log file.

2.Client在default 60秒内没有完成认证

The server receives a valid client connection request but the client takes a long time to authenticate more than the default 60 seconds.

3.DB负载太高

The DB server is heavily loaded due to which it cannot finish the client logon within the timeout specified.

WARNING: inbound connection timed out (ORA-3136)

这个错误跟 oracle 监听的一个参数有关:SQLNET.INBOUND_CONNECT_TIMEOUT

这个参数从9i开始引入,指定了客户端连接服务器并且提供认证信息的超时时间,如果超过这个时间客户端没有提供正确的认证信息,服务器会自动中止该连接请求,同时会记录试图连接的IP地址和ORA-12170: TNS:Connect timeout occurred错误。

这个参数的引入,主要是防止DoS攻击,恶意攻击者可以通过不停的开启大量连接请求,占用服务器的连接资源,使得服务器无法提供有效服务。在10.2.0.1起,该参数默认设置为60秒

但是,这个参数的引入也导致了一些相关的bug。比如:

Bug 5594769 - REMOTE SESSION DROPPED WHEN LOCAL SESSION SHARED AND INBOUND_CONNECT_TIMEOUT SET

Bug 5249163 - CONNECTS REFUSED BY TNSLSNR EVERY 49 DAYS FOR INBOUND_CONNECT_TIMEOUT SECONDS

该参数可以通过设置为0来禁用,在服务媏

设置sqlnet.ora文件:SQLNET.INBOUND_CONNECT_TIMEOUT=0

设置listener.ora文件: INBOUND_CONNECT_TIMEOUT_listenername=0

然后reload或者重启监听

这是由于连接超时所产生的问题,在10.2.0.1.0版本中sqlnet.inbound_connect_timeout参数默认为60秒,即如果连接时间超过60秒则提示超时,而在其他10G版本中这两个参数默认为0,即无限制。

如何操作:

一、查看数据库中listener.ora中的inbound_connect_timeout参数值

1、进入lsnrctl,

LHXXDBS01

9d24499b1c0dd8fc18b5bd7f37dfe2c2.gifraoms> lsnrctl

2、查看inbound_connect_timeout参数:

LSNRCTL> show inbound_connect_time

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))

LISTENER parameter "inbound_connect_timeout" set to 0

The command completed successfully

如果inbound_connect_timeout参数值不为0,则可以修改为0

修改:

LSNRCTL> set inbound_connect_time 0

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))

LISTENER parameter "inbound_connect_timeout" set to 0

The command completed successfully

二、修改/oracle/oms/102_64/network/admin/sqlnet.ora

Vi sqlnet.ora

SQLNET.INBOUND_CONNECT_TIMEOUT = 0

保持退出  wq!

三、重新载入listener

LSNRCTL> reload

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))

The command completed successfully

第二天观察没有出现WARNING: inbound connection timed out (ORA-3136)连接超时的现象了。

调度时程的忙百分比(当这个比例超过50时,需要增加DISPATCHERS 的值):

Select Name "Dispatcher",

Network,

(Round(Sum(Busy) / (Sum(Busy) + Sum(Idle)), 4)) * 100 "Busy_Rate"

From V$dispatcher

Group By Name, Network;

Oracle连接超时

客户机 要想 连接 oracle服务机(装了数据库的机子),只需要在客户机配置一个 本地服务名就行了,不管你用Oracle服务端的配置工具 还是客户端的配置工具,都没有问题. 如果只是客户机连接服务机 ...

plsql通过instantclient连接oracle数据库报连接超时

配置:数据库oracle10.2;服务器操作系统centos5.5:客户机操作系统win7 32位:plsql版本10.0.5 配置前提必须关闭客户机与服务器操作系统的防火墙,否则会出现“连接超时”的 ...

Toad客户端连接Oracle数据库报错 ORA-12170:TNS:连接超时

Oracle 客户端连接Oracle数据库报错   ORA-12170:TNS:连接超时  排错步骤: 1. 查看网络是否畅通:  打开cmd,ping数据库IP 2. 查看端口是否畅通: 打开cmd ...

关于MySQL的wait_timeout连接超时问题报错解决方案

bug回顾 : 想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: ### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce ...

SQL Server 连接超时案例一则

上周六,一工厂系统管理员反馈一数据库连接不上,SSMS连接数据库报"连接超时时间已到.在尝试使用预登录握手确认时超过了此超时时间.......", 如下截图所示: 另外远程连接也连 ...

ORACLE连接字符串里每个参数的具体意思

1.数据库名(db_name):数据库名是存储在控制文件中的数据库的名称.它代表的是数据库也就是所有构成数据库的物理文件的总称.要修改这个名称,只要重建控制文件就行了.2.实例名:实例名指的是用于响应 ...

Oracle会话超时退出设置

前一段时间客户打电话说自从数据库搬迁后连接数据库总是提示会话不可用,和客户沟通才知到他们连接数据库的程序是从早上连上数据库后就一直保持连接状态,一天中需要执行几次操作,由于数据库中的会话连接有超时限制 ...

一次“ora-12170 tns 连接超时”的经历

win7    64位系统 oracle  10g   64位 plsql之前连接是好使的,突然连接不上,提示错误“ora-12170 tns 连接超时” 1.ping IP    没有问题 2. ...

基于ORA-12170 TNS 连接超时解决办法详解

转自原文 基于ORA-12170 TNS 连接超时解决办法详解 1.开始----程序-----Oracle------配置和移植工具-----Net Manager----本地----服务命名---o ...

随机推荐

Android之assets资源

assets目录下存放的原生资源文件,通过getAssets()方法获取. 使用: InputStream inputStream; try { inputStream = getAssets().o ...

CentOs图形界面的开启与关闭

1.1 shell中运行 init 3  进入文本模式,同时会关闭相关的服务(Xserver 肯定关闭) 1.2 Alt+Ctrl+F1~F6到字符界面,root登陆,ps aux|grep /usr ...

使用Python给要素添加序号

在ArcGIS的属性表中,由于编辑修改的原因,默认的FID或OID并不连续,经常需要给要素添加连读的序号,可使用Python代码完成. rec=-1 def autoIncrement(): glob ...

Delphi使用StrToDatetime在不同操作系统出现不同的情况(控制面板的时间格式都记录在注册表里,因此也可修改注册表)

Str:=  '2010-4-13  06:22:22'; StrToDateTime(Str); 现象:在WinXP, Win2003 都不会报错 但是在Windows7,Windows Serve ...

[ios2]蓝牙通信【转】

iPhone开发应用中关于GameKit蓝牙实例讲解是本文要介绍的内容,主要是来了解并学习GameKit蓝牙实例.介绍一下这个实例实现的是两个带有蓝牙设备的touch之间的一个小游戏,在界面上有个可以 ...

博客发在win10.me

看到了http://www.win10.me/?page_id=58 说可以把自己的文章投给win10.me 我试试 抱着没有的心态 居然可以 我联系九幽,和他们说我写了很多博客,质量不好,他们说好 ...

微信公众号开发C#系列-4、获取接口调用凭证

概述 获取接口调用凭证实质就是获取access_token.在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒 ...

python目录遍历文件名称替换

# -*- coding:utf-8 -*- import os import os.path import shutil import chardet import codecs mysql_fil ...

Spark学习笔记——手写数字识别

import org.apache.spark.ml.classification.RandomForestClassifier import org.apache.spark.ml.regressi ...

食物(矩阵快速幂)(DP)

这个题..我们可以想到用递推写!!qwq(好吧,其实我的DP水平不高啊qwq) 就是我们以两个为单位(一共九种组合情况),然后往后面推下一位的情况. 通过手动模拟,我们可以找到它们之间的递推关系(详见 ...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle连接超时错误(ORA-12170)通常指发生了网络连接问题,导致客户端无法与Oracle数据库建立连接。产生这个错误的原因可能是网络不畅通或数据库端口未打开。 排错步骤如下: 1. 首先,检查网络是否畅通。可以通过在命令提示符下使用ping命令来测试与数据库IP的连接是否正常。如果ping不通,可能是网络故障或数据库服务器不可用。 [1] 2. 其次,检查端口是否畅通。可以使用telnet命令测试客户端是否能够访问数据库端口。如果telnet连接失败,可能是数据库端口未打开或防火墙阻止了连接。 [1] 3. 如果以上步骤都正常,那么可以尝试使用Oracle Net Manager配置本地服务名。可以通过在开始菜单中找到Oracle文件夹下的Net Manager工具来配置本地服务名。确保服务名正确配置,并与数据库端口匹配。 [2] 总的来说,ORA-12170错误通常是由网络连接问题引起的。检查网络畅通性和端口是否打开,使用Oracle Net Manager配置正确的本地服务名,有助于解决连接超时问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [关于Oracle连接超时问题](https://blog.csdn.net/weixin_39566493/article/details/116508567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值