Zhang Xian
Zhang Xian
组织名称:河北兰科网络工程有限公司 组织官网:http://www.lankegp.com/ 组织地点:中国河北 联系方式:[email protected] 场景用途:公司大数据组做可视化分析使用
请问oracle,如何在jdbcurl里设置query_timeout呢?
我遇到的问题是,显示“连接超时”,读取失败。 1、看了下源代码,每个task新建连接,而不是线程池方式,所以不存在闲置超时的问题。 2、又找到了个java环境噪音机制的问题,也改了。 3、找了下源代码,新建连接的时候,设置的超时时间是48h,所以问题也不这里。 现在也确实定位不到问题。
目前排查的问题点: 1、java环境噪音的问题,已增加启动命令参数: -Djava.security.egd=file:/dev/./urandom -Dsecurerandom.source=file:/dev/./urandom 但依然报错。 2、查看了源码,关于query的timeout的问题,默认值是48h,所以排除。 3、增加了jvm到8g,启动了5个channel。内存是够的。 4、手动查询报错的sql,是没问题的。 5、怀疑oracle的超时连接,所以设置channel为1,单个task运行,运行了12个h,起了8个任务,报错了两个,其余6个正常。
目前排查的问题点: 6、怀疑是资源池的,闲置超时问题。查看了datax源码,oracle没有采用资源池,而是每个task新建连接。所以排除这个问题。
在1个channel的时候,数据是忽然抽取不到,然后报错的。怀疑是task的query的时候,忽然断开的。大概率是这个问题,但是无法定位,是什么机制导致了这个问题。 
测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。 怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。 datax的代码里,query_timeout是48h。 在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数?
> 测试,是写入的时候出的错误,然后最后一条写入后,一直无法写入,知道15分钟后(900s)报错超时。 怀疑是跟某种超时参数有关,但是查询了oracle的参数列表,没有15min的参数。 datax的代码里,query_timeout是48h。 在rs.next()这里bao'c报的错误。我在下面打印了一行,逐条排查,发现都是超时15min后,报的错误。这个datax是不有有默认的参数? 看到有的地方说,使用德鲁伊的连接池。但是在源代码里面没找到。有没可能德鲁伊的默认参数在哪个步骤带进去的?
目前搜集到的相关的问题: https://github.com/alibaba/DataX/issues/601 https://github.com/alibaba/druid/issues/2187 但是尝试了,也都没解决
 也怀疑是不是这个waitWriterTime过大的原因