OracleDataSource与Oracle UCP PoolDataSource

Gan*_*alf 37 oracle jdbc

我正在研究一些JDBC Oracle连接池项目,并遇到了一个名为通用连接池(UCP)的新的(Oracle)Oracle池实现.现在,它使用一个新类PoolDataSource用于连接池,而不是OracleDataSource [启用了缓存选项].我正在讨论是否要切换到这个新的实现,但找不到任何关于修复/升级这些会给我带来什么(如果有的话)的好文档.有人都有经验吗?加号/劣势?谢谢.

小智 33

最新的Oracle jdbc驱动程序(11.2.0.1.0)显式指出Oracle Implicit Connection缓存(使用OracleDataSource的缓存)已被弃用:

Oracle JDBC驱动程序发布了11.2.0.1.0生产Readme.txt

此版本中有哪些新功能?

通用连接池在此版本中,不推荐使用Oracle隐式连接缓存功能.强烈建议用户使用新的通用连接池.UCP具有ICC的所有功能,还有更多功能.UCP在单独的jar文件ucp.jar中可用.

所以我认为最好开始使用UCP,但文档并不是那么好.例如,我没有找到一种方法来使用UCP与spring ...

更新:我找到了正确的弹簧配置:好的我觉得我找到了正确的配置:

<bean id="dataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
    <property name="URL" value="jdbc:oracle:thin:@myserver:1521:mysid" />
    <property name="user" value="myuser" />
    <property name="password" value="mypassword" />
    <property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
    <property name="connectionPoolName" value="ANAG_POOL" />
    <property name="minPoolSize" value="5" />
    <property name="maxPoolSize" value="10" />
    <property name="initialPoolSize" value="5" />
    <property name="inactiveConnectionTimeout" value="120" />
    <property name="validateConnectionOnBorrow" value="true" />
    <property name="maxStatements" value="10" />
</bean>
Run Code Online (Sandbox Code Playgroud)

关键是指定正确的工厂类和正确的工厂方法


And*_*int 9

PDS是"通用的",因为它为非Oracle数据库(例如MySQL)提供了与ODS相同级别的池功能.

请参阅UCP开发指南,有关Oracle网站UCP过渡指南的文章

我没有看到从ODS迁移到UCP(PDS)的任何直接好处,但未来Oracle可能会弃用ODS中的一些功能.我使用ODS已经有一段时间了,我现在对它非常满意,但是如果我开始新的我会选择PDS.