![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Enterprise |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Привет!
Имеется несколько потоков создающие несколько экземпляров класса. Один из методов этого класса производит инсерт в таблицу Оракла. Таблицы создаются автоматически, т.е. имена таблиц уникальны для различных потоков. Коннекшен к ораклу один на все потоки. Инсерт производится так, имена таблиц меняются и все это в цикле: [SRC java]String query = "INSERT INTO INFO20070223095701860 (name1, name2, name3, name4, name5, name6, name7) VALUES (?, ?, to_date(?, 'dd.mm.yyyy hh24:mi:ss'), ?, ?, ?, ?)" PreparedStatement queryStmt = Conn.prepareStatement(query); queryStmt.setString(1, ((String[])d[0].getArList().get(0))[i]); queryStmt.setString(2, ((String[])d[1].getArList().get(i))[j]); queryStmt.setString(3, ((String[])d[2].getArList().get(j + shift10))[k]); queryStmt.setString(4, ((String[])d[3].getArList().get(k + shift8))[l]); queryStmt.setString(5, ((String[])d[4].getArList().get(l + shift6))[m]); queryStmt.setString(6, ((String[])d[5].getArList().get(m + shift4))[n]); queryStmt.setString(7, ((String[])d[6].getArList().get(n + shift2))[o]); queryStmt.executeUpdate(); queryStmt.close(); [/SRC] Проблема в том, что когда метод с инсертом выполняется различними потоками в одно время, некоторые строки в таблицы просто не попадают. Хотя читая лог файл, вижу что на инсерт посылаются все строки. Хоть экземпляры объектов и различны для разных потоков, но на всякий случай объявлял метод как synchronized. Все равно не помогло... Т.е. в процессы выполнения часть строк не инсертится и ошибки не возникает... Если методы выполняются не в одно время - все ОК. Помогите советом, плиз!! |
|||
|
||||
| JUncle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
Копните в сторону транзакций, мб поможет.
--------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
| Enterprise |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Проблема была в отсутствии в Oracle поддержки асинхронных DML в рамках одной транзакции.
Решилась добавлением коммита после инсерта каждой строки |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |