风影子
作者风影子·2012-08-30 10:37
数据库管理员·深圳

解决jdbc连接oracle rac报错一例: Got minus one from a read call

字数 864阅读 20061评论 0赞 0
    某个项目之前是oracle 11g单机环境,现在升级成了oracle 11g rac环境。某个应用程序需要通过调用JDBC连接ORACLE数据库,从ORACLE数据库中查询部分数据,而数据库升级为RAC环境后,JDBC连接ORACLE数据库的代码也做了相应修改。但发现改后却老是报错,错误信息为java.sql.SQLException: Io 异常: Got minus one from a read call,改为只连接某一个实例却无问题。

    于是上网查这个错误信息,发现报这个错的很多,原因也各不相同,排除了好几种后问题还是没有解决。还在上一家公司的时候我就发现同事在用JDBC连接ORACLE RAC数据库时只连接了其中的一个实例,这样当连接的那一台ORACLE主机出问题时,将会造成JDBC连接数据库失败,而这显然是不合适的,但当时同事说他们试过连接RAC数据库就是不行,老报错。现在想来估计是同类问题。而现在的同事也表示只能连单机,不能连RAC,因为不懂JDBC,同事说不能连我也没多想,最开始是建议他们在JAVA里调ODBC来解决,经过测试也是可行的,但就是要多安装一个oracle客户端。后来上网查jdbc连接oracle rac的资料,发现是一大把的资料,并没人反映连rac数据库有什么问题,这说明JDBC理论上连接ORACLE RAC应当是不存在问题的。

    于是接着问度娘,关于该报错信息终于找到了一个我认为比较合理的解释
http://news.newhua.com/news/2011/0331/119074.shtml
    大意是指一些老的JDBC驱动包是不支持RAC数据库的,想着我们这套系统还是多年前开发的,极有可能是JDBC驱动包过老引起的。马上建议同事将JDBC驱动包换成最新的,于是从oracle的安装目录中找了JDBC驱动ojdbc6.jar替换原来的JDBC驱动包,再一测试,果然没问题了。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广