2015-12-22 2 views
2

На кластере 2 узла когда один узел является отключение следующие ошибки C3P0 замечены:c3p0 ошибка соединения Аккумулирование - Oracle RAC

2015-11-10 10:00:25,655 | WARN | scheduler-1   | org.apache.log4j.Category | Exception on close of inner statement. 
java.sql.SQLRecoverableException: Closed Connection 
at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5416) 
    at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1585) 
    at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1570) 
    at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94) 
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:82) 
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1811) 

выше предупреждение следуют:

2015-11-10 10:00:25,668 | WARN | DefaultQuartzScheduler_Worker-10 | org.apache.log4j.Category | [c3p0] Another error has occurred [ java.sql.SQLRecoverableException: Closed Connection ] which will not be reported to listeners! 
    java.sql.SQLRecoverableException: Closed Connection 
     at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5416) 
     at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1585) 
     at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1570) 
     at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94) 

ASE в комментарий Стива Свальдмана от c3p0 github page, эти предупреждения связаны с недействительными/устаревшими соединениями.

Итак, в среде RAC Oracle, когда один экземпляр отключен, что происходит с соединениями, уже полученными при запуске и запуске узла? для большей части операции базы данных работали нормально после завершения работы узла. Только несколько вставок не смогли сбросить предупреждения выше. Используется ли объединение соединений c3p0 для использования в средах RAC?

Более подробная информация о предупреждениях: http://sourceforge.net/p/c3p0/mailman/message/18310863/

ответ

1

Предупреждения, приведенное выше, не смотрите, чтобы быть проблемой. c3p0 пытался очистить отчеты, чье родительское соединение уже было закрыто() ed.

В целом, c3p0 будет изящно восстанавливаться из базы данных при общих конфигурациях. Но вы можете увидеть некоторые предупреждения и Исключения, так как тесты начинают терпеть неудачу, а затем попытки очистить вещи потерпят неудачу.

c3p0 должен отлично работать с Oracle RAC. Однако Universal Connection Pool от Oracle предлагает special support for RAC-specific features, что c3p0 не предоставляет.

+0

Thanks.Initially, когда оба узла подключены, некоторые соединения будут получены. когда узел завершает работу, операции с базой данных будут обрабатываться другим экземпляром, который все еще работает и работает. Таким образом, соединения, приобретенные до того, как узел опустится, остаются в силе? Было замечено, что первые несколько записей после того, как узел упал, не вставлены в БД. – tweeper

+0

нет, как только узел опустится, соединения с ним будут недействительными. вы должны настроить тестирование соединения, чтобы плохие подключения не предоставлялись клиентам. то только те соединения, которые уже были проверены, когда база данных опустилась, будут испытывать ошибки. см. http://www.mchange.com/projects/c3p0/#simple_advice_on_connection_testing –

+0

Стив, последнее. Если я использую тестирование соединений (preferredTestQuery, testConnectionOnCheckout), поможет ли это избежать предупреждений, которые были замечены выше, которые, вероятно, вызваны в течение временного интервала, когда узел опускается, и те соединения, которые были получены с использованием этого экземпляра, становятся недействительными? – tweeper

Смежные вопросы