Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Потдержка транзакции
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Базы данных
SMitty
Здравствуйте форумчане.
Есть такая ситуация: пишу клиента на Delphi 7 к бд Oracle. На сервере FireWall настроен так, что отрубает транзакции по которым нет обмена данными долгое время.
Так вот суть вопроса: из Delphi приходится запускать довольно большие хранимые процедуры, они выполняются долго, соответственно FireWall транзакцию отрубает. Как можно обойти этот момент?
Буду рад любым идеям.
European
Цитата(SMitty @ 4:03:2008 - 17:14) *
Как можно обойти этот момент?

Зажать админам руки в дверь за такую конфигурацию фаервола

Или как-то уменьшать ХП, хотя это и не всегда возможно. А так анализировать план запроса, пытаться добиться минимальной "стоимости" запроса.
SMitty
То есть стараться уложится в заданное время?
Я пытался сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".
Но все равно приходится ждать ответа процедуры.
European
Цитата(SMitty @ 4:03:2008 - 18:01) *
То есть стараться уложится в заданное время?

Да, это прежде всего...
Кстати, а по какому критерию определялось время простоя, после которого транзакция отменяется?
Цитата(SMitty @ 4:03:2008 - 17:14) *
приходится запускать довольно большие хранимые процедуры, они выполняются долго

Долго это сколько?

Я так понимаю, что для обрубания транзакций должны быть веские доводы, а вариант
Цитата(SMitty @ 4:03:2008 - 18:01) *
сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".

это из ряда "а нам все равно"
SMitty
Цитата
а вариант
Цитата(SMitty @ 4:03:2008 - 18:01)
сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".

это из ряда "а нам все равно"

Это так и есть. Так как должно применяться к внешним пользователям, а приложение было написано для администраторов данных.

Цитата
Кстати, а по какому критерию определялось время простоя, после которого транзакция отменяется?

Я так понимаю просто по статистике взяли среднее. Около пяти минут.
Процедура же может выполняться до получаса.
European
Цитата(SMitty @ 5:03:2008 - 10:21) *
Процедура же может выполняться до получаса.

На мой взгляд, это очень долго и нужно попытаться что-то сделать. Хотя все ИМХО, т.к. структуры таблиц и ХП мне не известны.

Я не специалист в конфигурации фаерволов и администрирования Оракла, но может стоит попытаться не применять ограничения к транзакциям для приложения? Это больше вопрос к администраторам...

P.S. Было бы интересно послушать мнение других форумчан
sax_ol
Цитата(SMitty @ 5:03:2008 - 10:21) *
Около пяти минут.

Сильно настораживает ... многовато.
European
Цитата(sax_ol @ 5:03:2008 - 11:38) *
Сильно настораживает ... многовато

Относительно получасовых ХП не очень
sax_ol
Пол часа это совсем ужос, тут и пять минут на таймаут ставить и то подумаешь ...
SMitty
Да, ХП действительно выполняются очень долго. Приходится ворочить очень большими массивами данных. Поэтому переписывать процедуры или пытаться их разбить на много маленьких смысла не имеет.
Ситуацию осложняет то, что и приложение и ХП написаны намного раньше, чем введена эта конфигурация фаервола.
sax_ol
Цитата(SMitty @ 5:03:2008 - 12:36) *
Приходится ворочить очень большими массивами данных. Поэтому переписывать процедуры или пытаться их разбить на много маленьких смысла не имеет.

Может надо с индексами поколдовать? оно иногда помогает ... как-то делали отчеты, там процедуры работали около 40-60 сек! заказчик был подавлен smile.gif пошаманили - в итоге 7-8 сек. ( ~ в 6 и более раз)

PS: но начинать надо с изучения планов выполнения.
European
SMitty, тема всё больше уходит в душевные излияния.
Проблему можно решить следующими способами:
1 - изменить конфигурация фаервола
2 - изменить ХП
3 - совместно п.1 и п.2
4 - удалять гланды через ..., пытаясь "крутить" данные, чтобы наколоть фаервол.
Все остальные способы - различные вариации вышеизложенных. Остальное - Ваш выбор, т.к. никакой информации у нас нет

SMitty
Огромное спасибо European и sax_ol за участие. Основные идеи решения я понял, а дальше думать буду
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.