Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Update 2 发行说明

捆绑的 Sun JDBC 驱动程序

本节介绍已知的捆绑的 Sun JDBC 驱动程序问题和相应的解决方法。

错误号 

摘要 

6165970 

如果两个并行事务正在运行并且其中一个已回滚,则当使用准备好的语句进行更新时,结合使用 TRANSACTION_SERIALIZABLE 隔离级别和 Microsoft SQL Server 的捆绑 Sun 驱动程序的应用程序可能会挂起。

要为连接设置所需的隔离级别,必须以同一隔离级别创建相应的连接池。有关配置连接池的详细信息,请参见管理指南。 

解决方法

目前尚无解决方法。 

6170432 

PreparedStatement 错误。

描述 1

如果应用程序在一个事务中生成超过 3000 个 PreparedStatement 对象,DB2 可能会出现以下错误:

[sunm][DB2 JDBC 驱动程序] 无更多可用语句。请重新创建具有较大 dynamicSections 值的软件包。

解决方法 1

将以下属性添加到连接池定义中,以使驱动程序可以重新绑定具有较大动态段值的 DB2 软件包: 

createDefaultPackage=true replacePackage=true dynamicSections=1000

有关配置连接池的详细信息,请参见管理指南

描述 2

可能抛出的与上述 PrepardStatement 错误相关的另一条错误消息为:

[sunm][DB2 JDBC 驱动程序][DB2] 虚拟存储或数据库资源不可用。

解决方法 2

增大 DB2 服务器的配置参数 APPLHEAPSZ。最佳值为 4096。

描述 3

隔离级别为 TRANSACTION_SERIALIZABLE。如果应用程序使用隔离级别 TRANSACTION_SERIALIZABLE 并使用上面建议的某个参数,该应用程序可能会在获取连接时挂起。

解决方法 3

要为连接设置所需的隔离级别,必须以同一隔离级别创建相应的连接池。有关说明,请参见管理指南

6189199 

使用捆绑的 Sun 驱动程序为 Sybase Adaptive Server 设置隔离级别时出现问题。 

  • 如果两个并行事务正在运行并且其中一个已回滚,则在使用准备好的语句进行更新时,结合使用 TRANSACTION_SERIALIZABLE 隔离级别和 Sybase Adaptive Server 的捆绑 Sun 驱动程序的应用程序可能会挂起。连接回滚失败,系统显示以下消息,并且已回滚的连接不能再使用:

    java.sql.SQLException:[sunm][Sybase JDBC 驱动程序] 由于线的争用而无法提交请求

  • Sybase Adaptive Server 不支持 TRANSACTION_REPEATABLE_READ 隔离级别。但是在查询 DatabaseMetaData 时,捆绑的 Sun 驱动程序会返回数据库支持此隔离级别的内容。使用此隔离级别的应用程序将失败。

  • 使用捆绑的 Sun 驱动程序的应用程序无法设置 TRANSACTION_READ_UNCOMMITTED 隔离级别。在首次访问 DataBaseMetaData 时,应用程序会抛出以下异常:

    java.sql.SQLException:[sunm][Sybase JDBC 驱动程序][Sybase] 优化程序无法找到唯一的索引,它可以使用该索引对表 "sybsystemprocs.dbo.spt_server_info" 执行隔离级别 0 扫描。

解决方法

目前尚无解决方法。 

6247468 

在 Solaris 10 和 Enterprise Linux 3.0 上,Sun 捆绑的 Oracle JDBC 驱动程序不允许创建连接。 

解决方法

使用 SUN JDBC Oracle 数据源 (com.sun.sql.jdbcx.oracle.OracleDataSource) 时,对 JDBC 连接池设置以下属性:

<property name="serverType" value="dedicated"/>

属性的值取决于 Oracle 服务器侦听器的配置方式。如果它配置为“共享”模式,上述值必须更改为 "dedicated"。