|
|
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Всем привет. Вкратце проблема: Приложение(jdbc) запрашивает исходные данные с сервера Oracle, формирует файлы-сценарии прозвонки и отправляет их по ftp на Asterisk. Разрывы ftp восстанавливаю(благо у Apache есть библиотеки продвинутые) в автомате. Но как быть когда с Oracle кратковременно рвётся соединение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:45:12 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
connection-pool с тестированием и пересозданием соединией. Отвалилась операция - взяли другое соединение, запустили ещё раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:48:09 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
pvaseaВсем привет. Вкратце проблема: Приложение(jdbc) запрашивает исходные данные с сервера Oracle, формирует файлы-сценарии прозвонки и отправляет их по ftp на Asterisk. Разрывы ftp восстанавливаю(благо у Apache есть библиотеки продвинутые) в автомате. Но как быть когда с Oracle кратковременно рвётся соединение? Вы используете jdbc, проверьте вот что: Вы используете универсальное java.sql.Connection или же родной oracle.jdbc.driver.OracleConnection? При использование java.sql.Connection в связке с oracle.jdbc наблюдаются глюки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 15:13:44 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
crazy_handsВы используете jdbc, проверьте вот что: Вы используете универсальное java.sql.Connection или же родной oracle.jdbc.driver.OracleConnection? При использование java.sql.Connection в связке с oracle.jdbc наблюдаются глюки. Что за феерический бред? java.sql.Connection это интерфейс, который oracle.jdbc.driver.OracleConnection реализует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 15:30:53 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Blazkowiczcrazy_handsВы используете jdbc, проверьте вот что: Вы используете универсальное java.sql.Connection или же родной oracle.jdbc.driver.OracleConnection? При использование java.sql.Connection в связке с oracle.jdbc наблюдаются глюки. Что за феерический бред? java.sql.Connection это интерфейс, который oracle.jdbc.driver.OracleConnection реализует. Это не бред это опыт многолетней работы. На веблоджике 10, например, это проявляется через 2-3 дня работы приложения, лечится перезагрузкой. Когда в приложении меняешь на oracle.jdbc.driver.OracleConnection, то приложение уже работает стабильно постоянно. Также такой глюк был и у последней версии оракл аппликейшн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 15:34:13 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
crazy_handsЭто не бред это опыт многолетней работы. Опыт, который достаётся одним только наблюдением без понимания? crazy_handsНа веблоджике 10, например, это проявляется через 2-3 дня работы приложения, лечится перезагрузкой. Когда в приложении меняешь на oracle.jdbc.driver.OracleConnection, то приложение уже работает стабильно постоянно. Также такой глюк был и у последней версии оракл аппликейшн. Ну, то есть: было не знаем что, станцевали с бубном - помогло. Теперь всем советуем. OracleConnection реализует интерфейс java.sql.Connection. Разница может быть только в том как и откуда экзмпляры этих объектов получены. java.sql.Connection это не какой-то там "универсальный" конекшн. Это просто список методов к которым можно обратится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 15:49:53 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Вот фрагменты кода. Где посоветуете выполнять тестирование пула? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 17:21:39 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
pvasea, Поле con необходимо убрать. Вместо него всегда использовать DataSource.getConnection() В качестве DataSource использовать любой готовый пул, тот же Apache Commons DBCP. Там есть, например, параметр testOnBorrow, при каждом получении соединения, оно будет тестироваться простым запросом и, в случае ошибки, будет пересоздано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 17:32:40 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
On 23.03.2012 18:32, Blazkowicz wrote: > В качестве DataSource использовать любой готовый пул, тот же Apache Commons DBCP. Там есть, например, параметр > testOnBorrow, при каждом получении соединения, оно будет тестироваться простым запросом и, в случае ошибки, будет > пересоздано. Разве что по dataSource.getConnection() в DBCP будет возвращаться не OracleConnection, а другая реализация, в результате отпадут методы, объявленные именно в OracleConnection. Но до OracleConnection в DBCP можно достучаться. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 18:35:45 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Denis Popovотпадут методы, объявленные именно в OracleConnection Автор и сейчас ими не пользуется: static Connection con = null; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 18:40:02 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
On 23.03.2012 19:40, Blazkowicz wrote: > Автор и сейчас ими не пользуется: > static Connection con = null; Ну автор сам написал, что это фрагменты.. а где-нибудь в коде вполне может быть вызов oracle.sql.CLOB.createTemporary(), и аргументом у него Connection, но работает только с OracleConnection. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2012, 19:17:42 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Blazkowicz,просьба пояснить физику DataSource.getConnection(). Сейчас я использую Connection con = DriverManager.getConnection(url.getText().trim(), info); Т.е. выбираю соединение из пула . В чём отличие от использования DataSource.getConnection() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2012, 20:19:32 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
pvaseaConnection con = DriverManager.getConnection(url.getText().trim(), info); Т.е. выбираю соединение из пула . Как вы определили что это пул? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2012, 10:31:16 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Blazkowicz,забыл поставить "?". Полагал, что соединение выбирается из пула. Не буду более задавать банальных вопросов. Где можно прочесть как и откуда генерятся соединения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2012, 18:09:45 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
DriverManager.getConnection создаёт физическое содинение с сервером. Пул либо берется оракловый из драйвера, либо опенсорсный - C3P0, DBCP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2012, 22:39:11 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
В продолжение темы, кому-нибудь будет интересно: MiniConnectionPoolManager ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 18:18:23 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
pvaseaВ продолжение темы, кому-нибудь будет интересно: MiniConnectionPoolManager И какая от него польза? max connection? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2012, 18:20:45 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Вообще в самом JDBC не помню с какой версии появился метод isValid для Connection, который и проверяет соединение на адекватность. В методе getDBConnection можно реализовать проверку, живое соединение или нет и переподнять если надо. Единственная проблема - не все драйверы корректно реализуют данный метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:00:11 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
oneHalfЕдинственная проблема - не все драйверы корректно реализуют данный метод. конечно. Ведь соединение может порваться в любой момент: а) вы ничего по БЛ не делаете (смотрите на экран) б) вы взяли коннект для сохранения объекта в) вы в процессе сохранения Каждый вариант нужно обрабатывать индивидуально. т.к. индивидуальная БЛ. Т.е. нет тут сабжа - АВТОвосстановление соединения. Это не протокол TCP с гарантированной АВТОдоставкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:32:49 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Petro123конечно. Ведь соединение может порваться в любой момент: а) вы ничего по БЛ не делаете (смотрите на экран) б) вы взяли коннект для сохранения объекта в) вы в процессе сохранения Каждый вариант нужно обрабатывать индивидуально. т.к. индивидуальная БЛ. Т.е. нет тут сабжа - АВТОвосстановление соединения. Это не протокол TCP с гарантированной АВТОдоставкой. Не понял вообще ничего из вышенаписанного - БЛ видимо бизнес логика что ли, каждый вариант - это че вообще, обрабатывать индивидуально - это как. "Т.е. нет тут сабжа - АВТОвосстановление соединения." - это орг. вывод? Ну порвалось "в любой момент" - ну обработал исключение, сделал n-ое количество попыток восстановить соединение, получилось - клёво, повторил транзакцию, не получилось - выдал сообщение о потери связи с бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:57:18 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Ещё раз. "Восстановление соединения" решается индивидуально в каждой ИС. Они все разные по ТЗ и задачам. У одних бабка сидит и пялится на экран в мухосранске. У других банковские транзакции 24х7 Если не согласен, то раскажи подробнее про: oneHalfсделал n-ое количество попыток восстановить соединение где это написать и чему равно n PS в общем случае есть Код: sql 1. или обёртка из функции Коннект.ТыЖивой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 11:07:53 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Что значит - "Восстановление соединения" решается индивидуально - можно пример хотя бы для двух случаев - я просто не понимаю о чем вы - о количестве попыток, таймауте или имеете ввиду просто другой алгоритм восстановления? В любом случае для топикстартера, как мне кажется, не проблема "идивидуально" определиться и реализовать восстановление соединения по той логике, которая ему нужна, без прикручивания целого пула. Просто пул может смешно выглядеть в случае, когда у меня 200 десктопных клиентов (двузвенка) держат по одному соединению к бд, а я чтобы решить проблему с обрывом, к каждому клиенту прикручиваю пул минимум из 2-х соединенией. Бд скажет мне спасибо. Еще раз про реализацию isValid - она разная для разных бд, где то вообще метод не релизован. Пример Postgre - http://postgresql.1045698.n5.nabble.com/jdbc4-isValid-int-implementation-td5115637.html , как сейчас там - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 11:29:48 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
oneHalfПросто пул может смешно выглядеть в случае, когда у меня 200 десктопных клиентов (двузвенка) держат по одному соединению к бд, полностью согласен. Вот и я иду от простого к сложному ТЗ. А не наоборот (оверхед). В простом случае (десктоп): Аналог IE-Web. Например, ты читаешь этот форум. Как ты определишь что соединение порвалось? Только нажав F5. Т.е. аффтару: - разберись в причине "рвётся". Таймаут неверный? - повесь в меню для пользователя "Connect \ Войти" и т.д. - везде поставить try и внятное сообщение "Пропала связь от уборщицы со шваброй". - анализ причины разрыва (у меня было по ORA-коду) ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 11:43:32 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
Petro123, по поводу "...Это не протокол TCP с гарантированной АВТОдоставкой...." не понял до конца. В " Oracle Net8 Configuration and Troubleshooting ", by Hugo Toledo & Jonathan Gennick O'REILLY: "Однако, когда используются тонкие (thin) JDBC-драйверы, все смотрится совсем по другому. Тонкие драйверы были разработаны для того, чтобы функционировать без какого-либо установленного программного обеспечения Oracle. Они полностью выполнены на Java и поддерживают только TCP/IP. Для того, чтобы сделать такую разработку, Oracle был должен реализовать в Net8 необходимые функциональные возможности Java." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 11:07:23 |
|
||
|
Восстановление соединения с сервером Oracle
|
|||
|---|---|---|---|
|
#18+
pvasea, - я к тому, что АВТОматизация в протоколах проще, чем АВТОМАтизация таких вещей как - УправленияТранзакциями\АвтоРеконнектом\ОтложеннойЗагрузкой и т.д. Т.е. сабж лежит близко к БЛ, и поэтому простых рецептов нет. - по поводу, тонкого драйвера, согласен. Он нужен чтобы не ставить дополнительного ПО на клиента (Oracle клиент) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 11:23:56 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37728124&tid=2132176]: |
0ms |
get settings: |
13ms |
get forum list: |
28ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
84ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
119ms |
get tp. blocked users: |
3ms |
| others: | 370ms |
| total: | 664ms |

| 0 / 0 |
