通过JDBC查询Oracle 9i上的问题

时间:2014-05-14 03:55:48

标签: java oracle jdbc

最近,我的Oracle 9i数据库从一个站点移动到另一个站点,从那时起,我一直无法使用瘦JDBC驱动程序进行查询。

此数据库一直在异地并通过VPN连接 - 速度不是很快但可行。由于移动查询被发送到数据库,标题可能会返回然后停止。在v $ session中,我的会话是"不活动"但查询仍然列为存在。这将几乎无限期地挂起 - 我已经看到它在9小时内没有运动,回滚错误或其他任何事情。

当我从Oracle 11的JDBC驱动程序切换到Oracle 9驱动程序时,性能略有提高。我已经尝试过许多防火墙提示'在Oracle网站上(连接字符串更改和JDBC属性)但无济于事。

确实产生影响的一件事是将fetchRow大小更改为1 - 仍然非常慢,但某些查询可能会得到一些结果。

查询不是密集的 - 即使PK查找失败,表中有40个小文本列。在SqlPlus上正常工作。

我正在使用Linux(centOS和Fedora),尝试过JDK 7和8,瘦JDBC驱动程序版本9,11和12并使用SquirrelSQL,SQLWorkbench / J,SQLLine,groovy脚本和grails ap都具有相同的结果

1 个答案:

答案 0 :(得分:0)

事实证明,在任何正常音量下都会导致重大数据包丢失,从而导致其中一个ack / synack丢失并无限期挂起查询。

通过将MTU降至600(从操作系统默认值1500)来“解决”这个问题。妥协妥协,但正在发挥作用。