ODI Receives Timeout Messages On Linux x86 With Java 1.5 Onwards 错误_Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7541 | 回复: 0   主题: ODI Receives Timeout Messages On Linux x86 With Java 1.5 Onwards 错误        下一篇 
masy
注册用户
等级:少校
经验:1234
发帖:182
精华:0
注册:2011-11-4
状态:离线
发送短消息息给masy 加好友    发送短消息息给masy 发消息
发表于: IP:您无权察看 2011-11-23 17:11:34 | [全部帖] [楼主帖] 楼主

Linux x86

上使用Java 1.5以上版本时发生ODI接收信息超时错误。

适用于:

Oracle数据集成-版本:10.1.3.6.0往后版本【发行:发行:10gR3以及往后版本】
Linux x86
症状

在执行Linux x86 与 Java 1.5以上版本的Oracle数据集成器(ODI)方案时收到了超时。

com.sunopsis.sql.l: Oracle Data Integrator Timeout: connection with URL


Com.sunopsis.sql:Oracle数据集成器超时:链接URL

jdbc:oracle:thin:@XXXXXXXX:1521:DB1and user ODI.
at com.sunopsis.sql.SnpsConnection.a(SnpsConnection.java)
at com.sunopsis.sql.SnpsConnection.connect(SnpsConnection.java)
at com.sunopsis.dwg.cmd.e.j(e.java)
at com.sunopsis.dwg.cmd.e.i(e.java)
at com.sunopsis.dwg.cmd.e.A(e.java)
at com.sunopsis.dwg.DwgJv.treatCmd(DwgJv.java)
at com.sunopsis.dwg.DwgJv.main(DwgJv.java)
at oracle.odi.Agent.main(Agent.java)
DwgJv.main: Exit. Return code:-1


最终,用户会收到一个”java.sql.SQLRecoverableException: IO操作异常:请重新连接”的消息,例如

java.sql.SQLRecoverableException: IO Error: Connection reset
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:421)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:221)


at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverE

原因

使用的Java运用程序和Oracle11g数据库,在Linux操作系统上的Oracle JDBC驱动程序,可能会遇到字节的I/O“重新连接”的消息,这是由于“void nextBytes(byte[])”方法在实现”java.security.SecureRandom”时,由Oracle提供的标准API用于生成随机字节。这是因为防止有故障的硬件软件读出”dev/dandom”。

这个问题有2种:
当SecureRandom.nextBytes(byte[])函数被调用时,JVM总是尝试将列出的所有文件在/tmp(或者备用的tmp目录设置-Djava.io.tmpdir)。

如果该文件很大时,这个方法就要执行很长时间才能做出响应,从而导致服务器弹出超时信息。

该方法void nextByTES(byte[])使用了Linux上的/dev/random,并在某些机器上缺乏随机数生成硬件的运作就会使整个登录过程停止速度的减慢。

最终,用户就会遇到 I/O“重新连接”异常。

解决方案

Oracle Sun 公司推荐如下2种解决方案:

编辑”jre/lib/security/java.security”这个文件或者

在调用Java程序时,设置系统属性”java.security.egd”覆盖”securerandom.source”的Java设置,使其指向”/dev/urandom”而不是默认的”/dev/random”。

Oracle 数据集成器(ODI),请运用的解决方案如下:
编程ODI ”bin”目录下的 ”odiparams.sh”这个配置文件。

找到 ODI_ADDITIONAL_JAVA_OPTIONS这个变量,并添加”Djava.security.egd=file:/dev/urandom”这个真正的值。

例如:

#
# Additional Java Options
#
ODI_ADDITIONAL_JAVA_OPTIONS="-Djava.security.egd=file:/dev/urandom"
Apply the changes, and restart the ODI Agents and/or Scenario executions.


运用这个修改,并重新启动ODI代理,执行这个方案。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论