Источник данных Weblogic JDBC дает "Нет доступных ресурсов в пуле" только с 1 активным соединением - PullRequest
5 голосов
/ 20 апреля 2010

Я использую источник данных weblogic JDBC, и моя БД - Oracle 10g, ниже - конфигурация.

Раньше все работало нормально, но внезапно стало возникать проблема, см. Ниже исключение.

Weblogic JDBC DataSource, java.sql.SQLException: Не удается получить XAConnection weblogic.common.resourcepool.ResourceLimitException: В настоящее время нет доступных ресурсов в бассейн

<?xml version="1.0" encoding="UTF-8"?> <jdbc-data-source

XMLNS = "http://www.bea.com/ns/weblogic/90" XMLNS: сек = "http://www.bea.com/ns/weblogic/90/security" Xmlns: WLS = "http://www.bea.com/ns/weblogic/90/security/wls" XMLNS: XSI = "http://www.w3.org/2001/XMLSchema-instance" XSI: SchemaLocation = "http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd"> XL-Справочно-DS
JDBC: оракул: ОКИ: @ abc.COM oracle.jdbc.driver.OracleDriver пользователь DEV_260908 пароль пароль длл ocijdbc10 протокол OCI oracle.jdbc.V8Compatible правда baseDriverClass oracle.jdbc.driver.OracleDriver
1 100 1 правда SQL SELECT 1 FROM DUAL

DataJndi OnePhaseCommit

Это исключение происходит в среде разработки, где подключенный пользователь только один.

Я знаю, что это связано с максимальным размером пула, но я также подозреваю, что это может быть связано с Oracle, возможно, Oracle не может создавать соединения.

Мои вопросы:

  1. Есть ли какой-либо параметр отладки / ведения журнала, чтобы включить ведение журнала источника данных, чтобы я мог проверить количество подключений, освобожденных и неиспользуемых в журналах?
  2. Как я могу проверить ограничение соединения оракула для конкретного пользователя?

Ответы [ 3 ]

8 голосов
/ 21 апреля 2010

Похоже, что что-то постепенно пропускает соединения, как вы, вероятно, подозреваете, и в конечном итоге вы достигаете максимального размера пула JDBC. Я не думаю, что вы сначала нарушаете ограничения Oracle, поскольку получаете исключение ORA, а также не сможете напрямую подключиться к базе данных.

Вы можете настроить источник данных для сбора информации о профиле из консоли WebLogic; из меню структуры домена перейдите в раздел services-> JDBC-> sources, выберите ваше соединение и перейдите на вкладку диагностики в разделе конфигурации. Но вы можете получить приблизительное представление о базовой статистике пула; Перейдите в Environment-> Servers, выберите свой сервер и посмотрите на вкладку JDBC в разделе мониторинга. Это показывает активные соединения и отметку уровня воды. Если какой-либо из них совпадает с вашим максимальным размером пула, это довольно хороший признак того, что у вас есть утечка.

Со стороны Oracle вы можете посмотреть количество сеансов, разрешенных с помощью show parameters sessions, но также необходимо проверить show parameters processes, что может еще больше его ограничить (а некоторые из них необходимы внутренним процессам, таким как pmon). Вы можете видеть, сколько открытых соединений у вас с чем-то вроде select count(*) from v$session where username = 'DEV_260908';. Исходя из ошибки, я не ожидал бы, что она будет очень близка к пределам сеанса / процесса, но должна совпадать с количеством активных подключений с консоли.

0 голосов
/ 04 февраля 2017

Включить WebLogic ServerTransactionTimeout.

  1. Нажмите на имя источника данных:

screenshot

0 голосов
/ 29 августа 2015

Сервер Weblogic не может получить соединение. Это может произойти, если вы закрываете объект подключения и снова пытаетесь использовать тот же объект подключения.

Надеюсь, это поможет!

...