JDBC搜索CLOB字段阻塞问题

WC的一些事一些情 2015-05-27 08:37:07
问题:
Oracle同一个表(含有clob字段),当clob字段的内容小于约10K(看作阀值),查询正常返回。但当某行记录的clob大于该阀值时,查询没有返回,在等待,通过tcpdump抓包发下以下现象:

小于阀值正常查询:

大于阀值阻塞现象:


从抓包分析,正常查询是有TCP结束(FIN),但异常查询再接收了某个包后就发生阻塞,又不关闭连接。

排除1:一摸一样的语句在另一个局域网环境是可以查询的,无论clob多大,那说明数据库是没有问题的。
排除2:根据排除1可以看出,应用是没有问题的,因为在其他局域网上的服务器是可以的。
排除3:我把异常语句修改后:把那个clob字段拆开两部分返回再拼接成原来字段是可以查询的,那也可以证明不会因为整个数据包太大而导致网络传送阻塞。

小弟知识浅薄,无从下手,请问各位大牛还有什么查明问题真相的思路?服务器TCP参数设置?网络问题?数据库能监控语句的执行和信息返回吗?
...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 fcqm8888 的回复:
阻塞带来啥影响呢?现在情况如何?
跟应用和数据库都没有关系,后来发现是服务器之间的网络出现问题了。
fcqm8888 2016-04-03
  • 打赏
  • 举报
回复
阻塞带来啥影响呢?现在情况如何?
  • 打赏
  • 举报
回复
引用 1 楼 binsweet 的回复:
在数据库服务器上用你认为阻塞的sql验证,看是否正常,再一步步验证其他环节 另外检查一下你的代码,看是否在操作clob时某个变量有大小限制
在数据库上运行该语句是没有问题,另一个应用(代码一样只是不同局域网)是可以正常查询的。应用代码是Java写的,查询返回的变量是String类型,没有什么限制,因为数据只有10来K,也应该不会超过线程栈的大小(JVM默认是1M)。 应用问题我已经排除过,网络问题也检查过,数据库语句也执行过,到目前还真没什么思路了。
binsweet 2015-05-27
  • 打赏
  • 举报
回复
在数据库服务器上用你认为阻塞的sql验证,看是否正常,再一步步验证其他环节 另外检查一下你的代码,看是否在操作clob时某个变量有大小限制

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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