Я столкнулся с приведенной ниже проблемой при работе в облаке после выполнения нескольких вызовов БД, но, к сожалению, не могу воспроизвести ее локально. Нужен совет или направление, если чего-то не хватает -
Caused by: oracle.ucp.UniversalConnectionPoolException: Universal Connection Pool already exists in the Universal Connection Pool Manager. Universal Connection Pool cannot be added to the Universal Connection Pool Manager
at oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:378)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:68)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:91)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:149)
at oracle.ucp.jdbc.PoolDataSourceImpl.createUniversalConnectionPool(PoolDataSourceImpl.java:985)
... 37 common frames omitted
У меня есть следующий bean-компонент DataSource — он был перенесен из OracleDataSource (dataSource.setConnectionCachingEnabled(true) — это устарело)
@Bean("testDataSource")
DataSource getDataSource() throws SQLException {
logger.info("Setting UP DataSource for : {}", DB_POOL_PROVIDER_UCP);
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL(url);
pds.setUser(username);
pds.setPassword(password);
pds.setConnectionPoolName("TestDBPool");
pds.setMinPoolSize(2);
pds.setMaxPoolSize(50);
pds.setInitialPoolSize(3);
pds.setInactiveConnectionTimeout(60);
pds.setMaxStatements(100);
pds.setAbandonedConnectionTimeout(60);
pds.setConnectionWaitTimeout(30);
pds.setTimeToLiveConnectionTimeout(240);
pds.setTimeoutCheckInterval(60);
pds.setFastConnectionFailoverEnabled(false); //Just one node
pds.setValidateConnectionOnBorrow(true);
pds.setSQLForValidateConnection("select 1 from dual");
return pds;
}
И в большинстве мест используется DataSource
org.springframework.jdbc.object.StoredProcedure
И –
попробуйте (Connection conn = dataSource.getConnection())
SpringBootVersion — 3.3.0
UCP — 21.9.0.0
ojdbc11 - 21.9.0.0
Я пытался получить ConnectionPoolName после локального запуска приложения с использованием случайного API, но оно просто печатало указанное выше имя пула БД -
String[] poolNames = UniversalConnectionPoolManagerImpl.getUniversalConnectionPoolManager().getConnectionPoolNames();
for (int i = 0; i < poolNames.length; i++) {
System.out.println(poolNames);
}
Фрагмент POM –
org.springframework.boot
spring-boot-starter-jdbc
com.zaxxer
HikariCP
org.springframework.boot
spring-boot-starter-data-jpa
com.oracle.database.jdbc
ojdbc11
com.oracle.database.jdbc
ucp
Подробнее здесь: https://stackoverflow.com/questions/788 ... -custom-da
Ошибка универсального пула соединений уже существует (Oracle UCP) Пользовательский источник данных SpringBoot ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Исключение Oracle UCP (ORA-12631) в Oracle 19c с аутентификацией Kerberos
Anonymous » » в форуме JAVA - 0 Ответы
- 48 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Исключение Oracle UCP (ORA-12631) в Oracle 19c с аутентификацией Kerberos
Anonymous » » в форуме JAVA - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Исключение Oracle UCP (ORA-12631) в Oracle 19c с аутентификацией Kerberos
Anonymous » » в форуме JAVA - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-