![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
cra6 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.12.2007 Репутация: 2 Всего: 2 |
Есть java приложение которое работает с базой Oracle и GSM модемом через jdbc:oracle:thin
возник указанный ниже ексепшн.Подозреваю что это всё из-за апдейта который не может выполнится из-за блокировки записи в Оракл.Как вообще можна с таким боротся?Проверить заблокирована ли запись или в обработчике чего то написать... Буду благодарен за любой комментарий. 22.07.2009 9:34:41 readmsg.OraSms receiveSms SEVERE: processingSmsErrorSQL java.sql.SQLException: Данные для считывания из сокета отсутствуют at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java) at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java) at oracle.jdbc.ttc7.Oopen.receive(Oopen.java) at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java) at oracle.jdbc.driver.OracleStatement.open(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java) at readmsg.Oracle.sqlOraUpd(Oracle.java:73) at readmsg.OraSms.receiveSms(OraSms.java:177) at readmsg.ReadAndSendMessages$InboundNotification.process(ReadAndSendMessages.java:239) at org.smslib.modem.AModemDriver$AsyncMessageProcessor.run(AModemDriver.java:876) 22.07.2009 9:42:59 readmsg.OraSms receiveSms SEVERE: processingSmsErrorSQL java.sql.SQLException: Исключение ввода/вывода: Software caused connection abort: socket write error at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.ttc7.TTC7Protocol.handleIOException(TTC7Protocol.java) at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java) at oracle.jdbc.driver.OracleStatement.open(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java) at readmsg.Oracle.sqlOraUpd(Oracle.java:73) at readmsg.OraSms.receiveSms(OraSms.java:177) at readmsg.ReadAndSendMessages$InboundNotification.process(ReadAndSendMessages.java:239) at org.smslib.modem.AModemDriver$AsyncMessageProcessor.run(AModemDriver.java:876) |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
для понимания ситуации вопросы:
1) данный эксепшн вываливается всегда, или периодически? 2) версия jdbc и версия oracle? 3) можно увидеть исходник котрый выполняется методом executeQuery ps. а вобще похоже на потерю соединения драйвера с ораклом, т.е. запрос ушел, а получить ответ не удалось. нечно похожее проскакивало при работе с ораклом 9 с использованием jdbc для оракл 10. (причину не выявили). вполне может и модем ложать... (но это личный довод, обосновать немогу) но на вопросы всетаки ответьте. |
|||
|
||||
cra6 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.12.2007 Репутация: 2 Всего: 2 |
1)Exception вываливается довольно редко , как реакция на входящее сообщение + возникает утром когда отрабатывают процессы закрытия дня и т.д. Причём программа успевает вставить в базу данные о пришедшей смс ке. Проблема явно в апдейте...
2)Oracle JDBC Driver version - 9.0.2.0.0 Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production 3)executeQuery заменил на executeUpdate
|
|||
|
||||
DimW |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
вобще то я имел ввиду SQL который выполняется, но уже не важно ошибка была точно такая же "socket write error ", я больше чем уверен что проблема не в SQL, а в его вызове и блокировки тут не причем т.к. ошибку явно не оракл вещает, а сами дрова. немного поясню: т.к. проблему идентифицировать неудалось в связи с отсутсвием ее описания даже на металинке, по этому буду руководствоваться своими наблюдениями. ошибка не возникала втой части ПО где при разработке использовались объекты иметоды пакета "import oracle.jdbc.*" ваш метод sqlOraUpd будет выглядеть примерно так:
еще одна особенность заключалась в том, что логика была реализована на уровне БД(думаю это не так важно):
соответственно ваш параметр oraDoSql должен содержать вызов этой процедуры:
вобщем решать вам реализовывать так как я показал или нет, но попробывать стоит ибо 100%-го лекарства нет. |
||||||
|
|||||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
еще предположение:
возможно при использовании пакета oracle.jdbc, методы используют какие то "особые параметры" для идентфикации коннекта между ораклом и объектом который его определяет, поэтому я больше склоняюсь к потере конекта с БД, чем к магическому действию методов пакета oracle.jdbc. Добавлено через 4 минуты и 33 секунды еще инфа для размышления: http://www.sql.ru/forum/actualthread.aspx?tid=627245 |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Ну вообще судя по
проблема в том, что TCP/IP соединение рвется. Какая версия драйвера используется? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
cra6 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.12.2007 Репутация: 2 Всего: 2 |
Спасибо за помощь. Действительно была потеря коннекта.
Решил с помощью проверки conn.isValid(); |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Это версия базы, а не драйвера. Там есть драйвера под JDK 1.2, 1.3 и 1.4, так вот драйвер под 1.4 должен показывать дополнительную информацию об ошибке. Добавлено через 1 минуту и 41 секунду В принципе можно периодически делать
Некоторые библиотеки сами умеют периодически проверять коннект на валидность. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
расковыриваю ojdbc14.jar? лезу в каталог META-INF, открываю файл MANIFEST.MF, внем:
Oracle JDBC Driver version - "10.2.0.4.0" - это не оно? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Это версия Oracle для которой этот драйвер, если распаковать classes111.jar, classes12.jar и ojdbc14.jar то там везде будет одна и та же версия (у меня Oracle JDBC Driver version - 9.0.2.0.0). Может я не совсем корректно выразился, но меня интересовала строчка: Oracle JDBC driver classes for use with JDK14.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |