|
|
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Всем привет. Мне кажется, что помимо рук, это всё-таки проблема на стороне сервлета поэтому пишу в java ветку. Есть веб приложение на томкате, которое банально вставляет кортеж в таблицу: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. На таблицу csv_files смотрит триггер. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Проблема: не работает загрузка файла с включенным триггером. Если триггер отключить, то все загружается корректно. Если триггер в статусе enable, то, повторюсь, вставка строки в таблицу виснет, триггер не срабатывает (и не дропается, и дисэблиться). При этом соединение через JDBC THIN CLIENT всё еще активно (оно активо и после того как закрываешь браузер). В чём может быть проблема? В интернетах написано, что этого из-за того, что веб сервер создает некий пул соединений на всякий случай и поэтому соединения все время остается активным и от этого описываемая проблемы. Но в коде же явно написано Код: java 1. 2. Помогите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 11:29:32 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Во-первых, где, _$%#&, finally? Во-вторых, вполне логично, что у вас триггер запускает какой-то долгоиграющий парсер FILE_PARSER, соответсвенно транзакция не заканчивается и Java ждет пока сервер распарсит файл. Замените FILE_PARSER на что-то более тривиальное и увидите что проблема ни в Java, ни в триггере. Если вам надо ждать окончания парсинга в Java, то нужно запускать эту задачу асинхронно по отношению к потоку сервлета. Если вам нужно просто парсить в фоне, то можно переделать триггер, чтобы он запускался асинхронно, к транзакции вставки. Как это делается вопрос к оракловедам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 11:41:33 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЕсли вам надо ждать окончания парсинга в Java, нет, не нужно. от джавы мне нужно просто загрузить файл, а его парсингом занимается субд. читаю про finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 11:51:26 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12 Код: sql 1. 2. 3. ..триггер не срабатывает... 1. Вызывает удивление, что в процедуруFILE_PARSER не передаются никакие параметры 2. Как определили, что "триггер не срабатывает"? 3. В JAVA код, лично я бы вставил явный вызов commit() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 11:56:42 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Leonid KudryavtsevВызывает удивление, что в процедуруFILE_PARSER не передаются никакие параметры так получилось. Leonid Kudryavtsev2. Как определили, что "триггер не срабатывает"? возможно не правильно подобрала слова. правильно сказать не работает загрузка при включенном тригере. Leonid Kudryavtsev3. В JAVA код, лично я бы вставил явный вызов commit() спасибо. вставлю, но у меня при открытии стоит conn.setAutoCommit(true). еще раз проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:14:16 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12нет, не нужно. от джавы мне нужно просто загрузить файл, а его парсингом занимается субд. но код у вас - синхронный - друг за другом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:19:16 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12, если MAYA_PKG.FILE_PARSER(); очень долго отрабатывает то можете попробывать генерировать задания через DBMS_SCHEDULER тогда вставка будет происходить быстро а процедура будет отрабатывать в фоне Хотя странно что процедура без переметров что она делает? может получится что при массовой вставке сильно просядет база ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:20:38 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12не работает загрузка при включенном тригере. выше сказали - включите ПУСТОЙ триггер ....по логике)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:20:59 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12Leonid Kudryavtsev2. Как определили, что "триггер не срабатывает"? возможно не правильно подобрала слова. правильно сказать не работает загрузка при включенном тригере Отсюда вывод - проблема скорее всего в триггере May12Leonid Kudryavtsev3. В JAVA код, лично я бы вставил явный вызов commit() спасибо. вставлю, но у меня при открытии стоит conn.setAutoCommit(true). еще раз проверю. Лично я auto commit никогда не использую. Смысла работать с Базой Данных и использовать auto commit не вижу никакого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:24:00 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevОтсюда вывод - проблема скорее всего в триггере согласна. но теперь проблема, что я не могу сессию срубить, чтобы начать разбираться. =(( вот так да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:29:06 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12Leonid KudryavtsevОтсюда вывод - проблема скорее всего в триггере согласна. но теперь проблема, что я не могу сессию срубить, чтобы начать разбираться. =(( вот так да... - не стопорь базу, и не надо будет рубить - оттестируй пакет через IDE для пакетов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:33:49 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12согласна. но теперь проблема, что я не могу сессию срубить, чтобы начать разбираться. =(( вот так да... Учись рубить. Против топора и лома нет приема. KILL SESSION... KILL в linux или ORAKILL в Windows - убьется все (и даже вместе с базой) На худой конец: семь бед - один резет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:37:44 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevУчись рубить. Против топора и лома нет приема. та это я умею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:39:09 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
в общем включила запуск процедуры парсинга в сервлет, но теперь пользователь ощущает на себе длительность работы этой процедуры. =(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 12:51:09 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
GaraZMay12, если MAYA_PKG.FILE_PARSER(); очень долго отрабатывает то можете попробывать генерировать задания через DBMS_SCHEDULER попробуйте генерировать задания если задержка между парсингом и вставкой допустима ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 13:41:03 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
GaraZ, сгенерировать джоб??? немного странный вариант. что считать сигналом для генерации задания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 13:59:31 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
GaraZможет получится что при массовой вставке массовой вставки нет, вставляется одна строка (в неделю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 14:00:46 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12, - джоб проверяет галку записи, что запись не пропарсена - периодичность джоба, хоть раз в секунду. На БД не повлияет. Либо код парсера сюда. Почему он такой долгий. Парсеры не могут быть долгими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 14:20:16 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Petro123, код парсера отрабатывает за две минуты. 146%. Petro123- джоб проверяет галку записи, что запись не пропарсена а тоооооочно..... + я сейчас вместо вызова процедуры в триггере напишу Код: plsql 1. и посмотрим что будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 14:24:28 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12, хм. триггер: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. отработал мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 14:44:31 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12хм. триггер: отработал мгновенно. Невероятно! Всего за 3 часа удалось повторить эксперементально то что уже объяснили выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 14:54:37 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, э, нет, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 15:09:19 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12, ой. извините. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 15:10:00 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12имеется процедура , которая отрабатывает за две минуты. но как только он помещается в джоб то она не отрабатывает. так же при этом не загружается файл веб приложением который парситься это процедурой. А при чем здесь Java? И что за джоб? http://stackoverflow.com/questions/1244636/oracle-how-to-execute-an-insert-trigger-without-delaying-the-insert-response ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 15:36:24 |
|
||
|
Сервлет на завершает соединение с БД Oracle и поэтому не срабатывает триггер
|
|||
|---|---|---|---|
|
#18+
May12GaraZ, сгенерировать джоб??? немного странный вариант. что считать сигналом для генерации задания? джоб может генерироваться в тригере но сдается мне что у вас явные проблемы в процедуре возможно какие то взаимные блокировки ну вообщем дальше только догадки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 16:49:45 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38450023&tid=2128290]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
218ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 497ms |

| 0 / 0 |
