远程访问数据库查询数据量一大就Hang

最近刚为客户升级了一套Oracle Database,一切进展顺利,眼看就要顺利验收时,发现有部分客户端软件连接新版本数据库时会Hang,问题非常诡异。

系统环境如下 
升级前的环境
OS:Windows Server 2003 
DB:Windows Database Enterprise Edition 9.2.0.5 
升级后环境
OS:Windows Server 2008 R2 64bit 
DB:Oracle Database Enterprise Edition 11.2.0.4 64bit 
 客户端环境
OS:Windows XP 
DB Client:ODAC 11.2 Release 3 and Oracle Developer Tools for Visual Studio (11.2.0.2.1) 

问题描述 
通过DataPump进行异机升级,升级后的主机和升级前的主机位于同一网段内。升级后发现部分.NET客户端程序访问11.2.0.4版本的数据库时,可以正常登录,
但访问的数量大时就死掉了。升级前所有的.NET客户端应用程序访问9.2.0.5的数据库可以正常工作

The below queries works 
----------------------------------------- 
select * from all_objects where rownum<60;--Response within 296 Millisecond 
select * from all_objects where rownum<70;--Response within 312 Millisecond 
select * from all_objects where rownum<80;--Response within 312 Millisecond 
select * from all_objects where rownum<90;--Response within 312 Millisecond 
select * from all_objects where rownum<100;--Response within 312 Millisecond 
select * from all_objects where rownum<110;--Response within 312 Millisecond 
select * from all_objects where rownum<120;--Response within 312 Millisecond 
select * from all_objects where rownum<130;--Response within 328 Millisecond 
The following queries hang 
----------------------------------------------- 
select * from all_objects where rownum<140;--Hang


而在客户端环境下通过SQL*PLUS访问11.2.0.4数据库,返回大数据量没有问题,在客户端环境下通过.NET程序 
访问原来的9.2.0.5数据库也可以返回大数据量。 问题非常奇怪。
如果是新版本数据库的问题,为什么通过SQL*PLUS可以,为什么不是所有的.NET程序都有问题?
如果是.NET程序问题,为什么不是所有的.NET程序都有问题?
如果是网络/防火墙的问题,为什么连接同网段的9i库是可以的?
问题分析 
问题非常诡异,通过10046服务器端跟踪,也没有什么有价值的信息,因为客户端采用ODAC驱动,无法进行相关客户端跟踪。
MOS要了adplus hang dump也没分析出原因,只知道在read()时Hang主了。

问题很有规律,到达一定量的数据,会直接Hang,看起来像服务器无法传递数据到客户端。Oracle能设置网络传递数据的参数不多。
首先想到了SDU,根据官方文档描述,服务器端和客户端都设置,取最小的那个。因为改动程序较为麻烦,就直接设置了服务器端。
无论设置512还是65535都没有用。

在试试防火墙的问题,找一台中间机器通过Oracle Connection Manager (CMAN)进行中转下,还是不行,吐血!(注:CMAN在类似有防火墙的地方还是很有用的,安装时候
注意要选择监听一起安装,不然无法安装成功,最好SQL*PLU也安装,这样方便测试)。

能试的都试了,还是不能解决访问,MOS也没有什么说法,郁闷!死马当活马医,预备以下测试方案:

1、客户端设置SDU
2、客户端设置OPD.NET FetchSize等相关参数
3、测试防火墙的TimeOut时间

客户端连接字符串中设置SDU=512,测试OK!OPD.NET/防火墙的问题就不用测试了。
进一步测试发现,SDU设置为4096还是OK的,设置5120就会Hang,不管它什么原因了,总算解决了。

 

 

 

 

 

转载于:https://www.cnblogs.com/dfzzqq/p/3656497.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

storm-hbase jar包中的bolt节点源码解析

一段时间内&#xff0c;大家都是自己在storm的节点中实现对hbase的操作&#xff0c;不管是普通的topo还是在trident中都是这样&#xff1b;不知道从那个版本起&#xff0c;在storm的压缩包中就多出了好几个jar包&#xff0c;把针对habse&#xff0c;mysql&#xff0c;mongodb等…

软件之道:软件开发争议问题剖析

软件之道&#xff1a;软件开发争议问题剖析 基本信息 原书名&#xff1a; Making Software 原出版社&#xff1a; OReilly 作者&#xff1a; (美)Andy Oram Greg Wilson 译者&#xff1a; 鲍央舟 张玳 沈欢星丛书名&#xff1a; 图灵程序设计丛书出版社&#xff1a;人民邮…

如何理解矩阵

线性代数课程&#xff0c;无论你从行列式入手还是直接从矩阵入手&#xff0c;从一开始就充斥着莫名其妙。比如说&#xff0c;在全国一般工科院系教学中应用最广泛的同济线性代数教材&#xff08;现在到了第四版&#xff09;&#xff0c;一上来就介绍逆序数这个“前无古人&#…

对于泛型的理解

如果希望构建一个集合容器&#xff0c;会用到ArrayList array new ArrayList(); ArrayList有几个缺点&#xff1a;1 无法保证容器中的类型安全&#xff08;类型一致问题&#xff09; 2 存进arralist的数据&#xff0c;CIL会自动进行装箱&#xff0c;也就是保存进ArrayList中的…

交通灯管理系统

题目需求&#xff1a; 模拟实现十字路口的交通灯管理系统逻辑&#xff0c;具体需求如下&#xff1a; 1、异步随机生成按照各个路线行驶的车辆。 例如&#xff1a; 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向…

REDIS提供的map,list,set,sortedset使用测试

public class RedisTest {public JedisPool jedisPool null;public void init(){//创建配置信息JedisPoolConfig pool new JedisPoolConfig();//设置最大的总链接数pool.setMaxTotal(300);//设置最大空闲链接数pool.setMaxIdle(100);//设置最大等待时间pool.setMaxWaitMilli…

Java 多线程-生产者、消费者

一、整体代码 ThreadDemo.java public class ThreadDemo { public static void main(String[] args) { Godown godown new Godown(0); Consumer c1 new Consumer(50, godown); Consumer c2 new Consumer(20, godown); Consumer c3 new Consumer(30, godown); Producer p1 …

scala初学之helloWorld

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

scala初学之函数定义、流程控制、异常处理入门

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

HGOI20190707 题解

Problem A 钢铁侠的诞生 现在有$n$个数字$a_i \leq 10^9 $&#xff0c;然后取出$m$个数字&#xff0c;保证合法。 从小到大输出剩余的$n-m$个数字。 对于100%的数据$m\leq n \leq 3\times 10^5$ Sol : 直接map映射然后用iterator来遍历整个map输出答案即可。 复杂度大概是$O(n…

scala初学之Tuple、Array、Map、文件操作入门实战

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

Java连载3-编译与运行阶段详解JRE,JDK,JVM关系

一、 1.JDK下载地址&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 二、Java的加载与执行 1.Java程序运行包括&#xff1a; &#xff08;1&#xff09;编译阶段&#xff1a;检查Java源程序是否符合Java语法&#xff0c;符…

KMP算法NEXT数组纯手工生成

用一个实际的例子来说明&#xff0c;经历了看懂&#xff0c;看不懂&#xff0c;看懂&#xff0c;看不懂&#xff0c;看懂...后我终于决定把它记下来了。 例子字符串为&#xff1a;abaabaca 首先可以肯定&#xff0c;第一个位置永远位0&#xff0c;第二个位置永远为1.那么可以…

P1078 文化之旅

题面 这题好像是初二时老师讲过的一道题&#xff0c;但是。。我没听&#xff1f;&#xff1f;反正没交过就对了。。 我本来想的是深搜spfa&#xff0c;写到50行实现不了&#xff1f;&#xff1f;果断看tj&#xff0c;floyd&#xff1f;&#xff1f;&#xff1f;&#xff08;黑人…

KMP算法中NEXT数组的作用以及代码实现

在http://blog.csdn.net/u012613903/article/details/79004094中写到了如何手工去求一个NEXT数组&#xff0c;这个在很多考试中可以用来解题。但是在实际的使用中&#xff0c;NEXT数组究竟发挥着什么样的作用&#xff0c;如何用代码实现KMP算法呢&#xff1f; KMP算法是用来确…

最长公共连续子串

给出两个字符串&#xff08;可能包含空格&#xff09;,找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法&#xff1a;动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为&#xff1a;当s1(i)s2(j)时&a…

求最长回文串-从动态规划到马拉车之路(上)

要解决的问题&#xff1a; 给定一个字符串&#xff0c;要求求出这个字符串中的最长的回文串子串。 例子&#xff1a; cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到&#xff0c;在考虑回文子串的问题时需要考虑奇偶性。因为奇回文关于中…

为什么Python中称__lt__、__gt__等为“富比较”方法

Python中基类object提供了一系列可以用于实现同类对象进行“比较”的方法&#xff0c;可以用于同类对象的不同实例进行比较&#xff0c;包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__六个方法。 那么为什么叫“富比较”(“rich comparison”)方法呢&#xff1f;查了相关…

求最长回文串-从动态规划到马拉车之路(下)

预备知识&#xff1a; &#xff08;1&#xff09;在一个数轴上有两点i和j&#xff08;i<j&#xff09;关于点m对称&#xff0c;那么有 i 2m-j&#xff1b; 证明&#xff1a; 因为 i<j 且 i 和 j 关于 m 对称&#xff0c;那么有 &#xff08;i j&#xff09;/ 2 m 所…

项目管理实战之团队管理 (转自:zhuweisky)

一个系统不仅需要优秀的分析和设计&#xff0c;更需要一个良好的过程将其从蓝图转化为实现。这个过程中最重要的是对团队的管理&#xff0c;也就是人的管理。一个优秀的团队和一个糟糕的团队的效能是天壤之别&#xff0c;她们之间的比例不是1:100或1:1000这样量化的数字能够表示…