我遇到了一些问题 ucp.jar
如果我ucp.jar用于oracle 12.1.0.1它可以工作.
如果我使用oracle 12.1.0.2的版本,那么我得到以下异常:
java.lang.ClassNotFoundException: oracle.jdbc.pooling.Factory
有没有人可以帮助我?
谢谢,毛罗
对于使用 Oracle OLTP 数据库作为数据源的现代后端 Java 应用程序,我应该使用哪一个?
对我来说 HikariCP 看起来像是现代 Java 应用程序事实上的标准池。但现在我需要维护一些过去的项目,该项目目前停留在 Oracle 驱动程序 v11 并使用 UCP。我现在想知道:Oracle的UCP比HikariCP有什么优势吗?您会使用 UCP 还是 HikariCP?
在start.spring.io生成的新 Spring Boot 项目将默认使用 HikariCP(尽管从 2.4 开始支持 UPC),直到您在 application.properties 中明确强制执行 UCP:
spring.datasource.type=oracle.ucp.jdbc.PoolDataSource
Run Code Online (Sandbox Code Playgroud)
Spring Boot 文档说:
1. We prefer HikariCP for its performance and concurrency. If HikariCP is available, we always choose it.
...
4. If none of HikariCP, Tomcat, and DBCP2 are available and if Oracle UCP is available, we use it.
Run Code Online (Sandbox Code Playgroud)
Oracle 网站包含有关如何将 UCP 与 …
我们在tomcat 6中使用Oracle UCP驱动程序(Oracle通用连接池).它或多或少像Oracles Howto一样配置.问题是驱动程序启动了很多线程(Thread-0到57,UCP-worker-thread-1到24),这些线程在服务器关闭时没有停止 - tomcat会发出大量错误消息,如下所示:
Web应用程序[/ xxx]似乎已启动名为[Timer-17]的线程,但未能将其停止.这很可能造成内存泄漏.
知道怎么处理这个吗?
我想使用以下代码创建 Oracle UCP:
import oracle.ucp.jdbc.PoolDataSource;
import oracle.ucp.jdbc.PoolDataSourceFactory;
System.out.println("***** OracleDS_UCP -> start init of PoolDataSource");
PoolDataSource pool = PoolDataSourceFactory.getPoolDataSource();
pool.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pool.setURL("jdbc:oracle:thin:@localhost:1521:XE");
pool.setUser("test");
pool.setPassword("test");
pool.setMaxStatements(10); // the maximum number of statements that may be pooled or cached on a connection.
pool.setInitialPoolSize(2);
pool.setMinPoolSize(1);
pool.setMaxPoolSize(50);
pool.setLoginTimeout(60); // one minute
pool.setConnectionWaitTimeout(60); // one minute
pool.setAbandonedConnectionTimeout(30 * 60); // thirty minutes
pool.setMaxIdleTime(60 * 60); // one hour and kill inactive or idle connections
pool.setInactiveConnectionTimeout(60 * 60); // one hour and kill inactive or idle connections
pool.setConnectionWaitTimeout(0); …Run Code Online (Sandbox Code Playgroud) 我正在运行一个 springboot 应用程序(在本地机器上运行良好),并且ORA-01882: timezone region not found在 ec2 实例上出错。它看起来像一个配置问题,但不知道如何解决它。
堆栈跟踪在下面
引起:java.sql.SQLException:无法启动通用连接池:oracle.ucp.UniversalConnectionPoolException:无法从数据源获取连接:java.sql.SQLException:ORA-00604:递归SQL级别1发生错误
ORA-01882: 未找到时区区域
我正在使用 ojdbc8 版本 12.2.0.1
我正在尝试比较一些 java 连接池库,但到目前为止我还没有找到任何令人满意的答案。现在 C3P0 正在我的应用程序中使用,但我想建议其他连接池库,但我没有任何可靠的信息可以迁移到任何其他连接池机制。我读到 Oracle 的 UCP 正在使用连接收集机制,但我不知道它有多大用处,是否还有其他提供者也提供收集机制。可以包括哪些点来比较各种连接池机制。谁能建议我在 Oracle UCP、C3P0 和 HikariCP 中哪个更好?还有比以上 3 更好的其他机制吗?
我一直在尝试将ojdbc代码从ojdbc14-10.2.0.1.0升级到ojdbc6-11.1.0.7.0.我们一直在使用OracleConnectionCacheImpl进行数据源连接,然后使用OracleDataSource转移到通用连接池.以下是我们目前在Spring中配置它的方式:
<bean id="myDatasource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
<property name="URL" value="@JDBC_URL@"/>
<property name="user" value="@JDBC_USERNAME@"/>
<property name="password" value="@JDBC_PASSWORD@"/>
<property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource"/>
<property name="connectionPoolName" value="MFR_RTE_POOL"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="100"/>
<property name="validateConnectionOnBorrow" value="true" />
<property name="connectionWaitTimeout" value="30"/>
<property name="connectionHarvestMaxCount" value="25"/>
<property name="connectionHarvestTriggerCount" value="5"/>
<property name="maxStatements" value="100"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
在没有关闭连接错误的情况下运行它需要一些时间,但现在我遇到了内存管理问题.我已经针对我使用ThreadPool的应用程序运行jconsole.此应用程序使用线程池并使用ThreadPoolExecutors根据从文件传递的数据创建费用请求.一个文件可以有数十万个费用请求.我的问题是Heap中的长期记忆正在填满并且不会释放对象.在我设置的性能测试中,垃圾收集中的长期记忆大约在20-25分钟内完成,并且永远不会释放.该应用程序最终达到了GC Limit Exceeded Exception并停止运行.
当我使用旧的OracleConnectionCacheImpl类运行相同的测试时,它只运行没有问题.假设线程池和所有附带的代码都是使用旧版本的Spring(1.2.6)和旧的ojdbc驱动程序编写的,但OracleConnectionCacheImpl与Universal Connection Pooling的工作方式有什么不同?如果我想要容纳最新版本的Oracle JDBC驱动程序代码,我是否正在考虑重写我的域模型?我尝试过OracleDataSource连接,并且在同时处理多个文件后,它与NullPointerExceptions失败了.然后我去了UCP(在这个论坛的另一个帖子的建议),除了一个应用程序之外的所有工作都很好.此时我正在试图弄清楚是否可以为我的数据源进一步优化Spring配置bean,还是我需要开始考虑升级代码库.如前所述,此代码与旧的ojdbc类运行良好,但我在尝试实现UCP的每一步都遇到了问题.我开始怀疑它是否值得升级.