powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема exceeded maximum idle time, please connect again
24 сообщений из 24, страница 1 из 1
Проблема exceeded maximum idle time, please connect again
    #39817871
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Прошу помочь в нестандартной ситуации.

Есть приложение, которое работает с Oracle базой. Периодически пользователь нажимает некую кнопку, которая выполняет некоторый расчет (запускается процедура в БД). И ровно через 30 минут после этого, несмотря на активную работу с базой, возникает ошибка "exceeded maximum idle time, please connect again". Пользователю приходится перезапускать приложение.

Если эта процедура не запускается, то ошибки не возникает. Если запускается, то ошибка через 30 минут возникает всегда.

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

Есть только одно место в процедуре пересчета, которое может (на мой взгляд) влиять на эту ситуацию. В этом месте, пересчет создает несколько джобов, запускает их и ожидает их завершения. Сделано это для ускорения очень "тяжелого" пересчета.

Выглядит это примерно следующим образом:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
-- Цикл формирующий и запускающий одноразовые джобы
for i in 1 .. jobcoun 
loop
  dbms_scheduler.create_job(
         job_name   => 'JOBNAME_' || to_char(i),
         job_type   => 'PLSQL_BLOCK',
         job_action => 'begin longproc(' || i || '); end;',
         job_class  => '"JOB_CLASS"',
         enabled    => true,
         auto_drop  => true);
end loop;		 

-- Ожидание завершения джобов
loop
  dbms_lock.sleep(5);
  select count(1) into vjob_count from all_scheduler_jobs j
  left join all_scheduler_running_jobs r on r.OWNER=j.owner and r.JOB_NAME=j.job_name
  where j.job_name like v_job_name_like;
  
  exit when vjob_count = 0;
end loop;


Соответственно вопрос: может ли этот код влиять на возникновение ошибки (ну типа для выполнения джобов создаются сессии, которые после расчета неактивны и через 30 минут завершаются вместе с родительской) ? Можно это как то купировать ? Может ли быть какая то другая причина возникновения ошибки ?

Заранее спасибо за помощь.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817874
Фотография Vivat!San
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manatee,

скорректировать настройки resource manager или совсем отключить, вопрос к dba.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817901
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vivat!Sanblack-manatee,

скорректировать настройки resource manager или совсем отключить, вопрос к dba.

Спасибо, но к сожалению, это мало реальный вариант. Корпоративная безопасность у нас несколько выходит за рамки здравого смысла.

В любом случае, ну это же явно неверное поведение базы. И как кстати можно скорректировать настройки ?
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817919
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeВ любом случае, ну это же явно неверное поведение базы. И как кстати можно скорректировать настройки ?
Это штатное поведение базы, если настроен лимит на idle.
В счет лимита идет весь idle (все события ожидания класса idle), по этой причине данный лимит непригоден для автоматического отключения простаивающих сессий, что, вероятно, было целью dba при настройке профиля.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817928
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousblack-manateeВ любом случае, ну это же явно неверное поведение базы. И как кстати можно скорректировать настройки ?
Это штатное поведение базы, если настроен лимит на idle.
В счет лимита идет весь idle (все события ожидания класса idle), по этой причине данный лимит непригоден для автоматического отключения простаивающих сессий, что, вероятно, было целью dba при настройке профиля.

да ладно
IDLE_TIME specifies the permitted periods of continuous inactive time during a session, expressed in minutes
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817931
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАда ладно
IDLE_TIME specifies the permitted periods of continuous inactive time during a session, expressed in minutes
Угу. На сарае тоже написано, а там, промеждупрочим, дрова.
Эта дрянь как-то рубила мне выгрузки данных - копила idle-ы с "more data to client", 5-6 гиг выгружало и рвалось, накопив ~15 минут простоя.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817932
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeЕсли эта процедура не запускается, то ошибки не возникает. Если запускается, то ошибка через 30 минут возникает всегда.

т.е. пользователь запустил и тупо сидит ждет пока отработает процедура, опрашивающая джобы на предмет завершения их работы?
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817935
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousDВАда ладно
IDLE_TIME specifies the permitted periods of continuous inactive time during a session, expressed in minutes
Угу. На сарае тоже написано, а там, промеждупрочим, дрова.
Эта дрянь как-то рубила мне выгрузки данных - копила idle-ы с "more data to client", 5-6 гиг выгружало и рвалось, накопив ~15 минут простоя.

ну тут еще как-то можно собрать все эти more data to client в permitted periods of continuous inactive , а вот то что процедура каждые 5 сек делает запрос, это совсем другое дело

Что-то мне кажется сама процедура тоже в отдельном потоке запускается )
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39817979
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАну тут еще как-то можно собрать все эти more data to client в permitted periods of continuous inactive
black-manateeвыполняет некоторый расчет (запускается процедура в БД). И ровно через 30 минут после этого ... "exceeded maximum idle time, please connect again".
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818214
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВАblack-manateeЕсли эта процедура не запускается, то ошибки не возникает. Если запускается, то ошибка через 30 минут возникает всегда.

т.е. пользователь запустил и тупо сидит ждет пока отработает процедура, опрашивающая джобы на предмет завершения их работы?

Процедура запускается в общем потоке, так что да, ждет. Но занимает это минуты три. А затем он (пользователь) продолжает работать.

Самое печальное в том, что пользователь, после расчета использует данные расчета, которые ложатся во временные таблицы, время действия которых - сессия. То есть я не могу для расчета открыть новое соединение и запустить в процу в отдельной сессии. :(
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818215
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое печальное в том, что пользователь, после расчета использует данные расчета, которые ложатся во временные таблицы, время действия которых - сессия. То есть я не могу для расчета открыть новое соединение и запустить в процу в отдельной сессии. :(

Хотя.... Если я запущу процедуру в отдельном потоке, считаю данные из временных таблиц во внутренние структуры программы, потом вернусь к своей сессии, заполню временные таблицы... Это же по идее решит мою проблему ?
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818235
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeСамое печальное в том, что пользователь, после расчета использует данные расчетаНе морочь форум. Сначала джобы мешали тебе танцевать, теперь временные таблицы.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818321
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-black-manateeСамое печальное в том, что пользователь, после расчета использует данные расчетаНе морочь форум. Сначала джобы мешали тебе танцевать, теперь временные таблицы.

Не читал, но осуждаю.

Если внимательно прочитаете, то написано вполне ясно.

Джобы приводят к вышеуказанной ошибке.
Запустить процедуру с джобами в другой сессии (что по идее решило бы проблему) мешают временные таблицы, которые нужно использовать после выполнения процедуры.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818323
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeЗапустить процедуру с джобами в другой сессии (что по идее решило бы проблему) мешают временные таблицы
используйте не временные таблицы
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818388
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeЕсли внимательно прочитаете, то написано вполне ясно.мне не ясно, какое отношение временные таблицы имеют к приведенному коду.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818410
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex-lsblack-manateeЗапустить процедуру с джобами в другой сессии (что по идее решило бы проблему) мешают временные таблицы
используйте не временные таблицы
Используется монстроидальная система, которую писали несколько десятков слабо взаимодействующих между собой программистов, в течение более десяти лет.
Выкинуть ее или кардинально переделать не так просто из-за правила: вот работает, давайте не будем это трогать...
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818413
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-black-manateeЕсли внимательно прочитаете, то написано вполне ясно.мне не ясно, какое отношение временные таблицы имеют к приведенному коду.
Дубль 3
Запускаемая процедура заполняет временные таблицы.
Эти таблицы используются уже после отработки процедуры программой.
По этой причине нельзя запустить процедуру в отдельной сессии, которую можно было бы убить после расчета.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818423
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeмне не ясно, какое отношение временные таблицы имеют к приведенному коду.
Дубль 3
Запускаемая процедура заполняет временные таблицы.
Эти таблицы используются уже после отработки процедуры программой.
По этой причине нельзя запустить процедуру в отдельной сессии, которую можно было бы убить после расчета.[/quot]

и джобы ухитряются как-то работать с временной таблицей ))
чудеса.
Давайте все месте разгадывать ваш ребус )))
полет фантазий не ограничен
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818557
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВАblack-manateeмне не ясно, какое отношение временные таблицы имеют к приведенному коду.
Дубль 3
Запускаемая процедура заполняет временные таблицы.
Эти таблицы используются уже после отработки процедуры программой.
По этой причине нельзя запустить процедуру в отдельной сессии, которую можно было бы убить после расчета.

и джобы ухитряются как-то работать с временной таблицей ))
чудеса.
Давайте все месте разгадывать ваш ребус )))
полет фантазий не ограничен[/quot]

Я извиняюсь, что не совсем понятно написал.

В общем так: запускается некая процедура. Ее цель рассчитать кое-какие данные и записать во временные таблицы. Затем после расчета, программа использует эти данные из временных таблиц. Все вместе: запуск процедуры, запуск джобов внутри процедуры и дальнейшее использование временных таблиц - все происходит в рамках одной сессии. Если сессию закрыть, то содержимое временных таблиц естественно уничтожается.

Проблема в том, что через 30 минут после запуска процедуры возникает вышеуказанная ошибка. Пользователю приходится перегружать программу и снова запускать процедуру.

Почему это происходит, я собственно и хотел узнать создав эту тему. Мое предположение - это из-за джобов. (Просто более не из-за чего).

Поскольку я так и не узнал из-за чего происходит ошибка, я решил сделать следующим образом: запускать процедуру в другой сессии. Затем вытаскивать в этой другой сессии содержимое временных таблиц и засовывать во временные таблицы в рамках уже изначальной сессии с которой работает пользователь. А ту сессию, в которой запускал процедуру закрывать (вместе с содержимым временных таблиц, которое уже перенес в старую сессию). Надеюсь это решит мою проблему.

Всем спасибо за помощь.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818565
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeКорпоративная безопасность у нас несколько выходит за рамки здравого смысла.black-manateeИспользуется монстроидальная система, которую писали несколько десятков слабо взаимодействующих между собой программистов, в течение более десяти лет.
Выкинуть ее или кардинально переделать не так просто из-за правила: вот работает, давайте не будем это трогать...Только мне очевидно, что безопаснюки покусились на "не трогать"? И пошли вразрез с "политикой" говно не ворошить?
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818568
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elicblack-manateeКорпоративная безопасность у нас несколько выходит за рамки здравого смысла.black-manateeИспользуется монстроидальная система, которую писали несколько десятков слабо взаимодействующих между собой программистов, в течение более десяти лет.
Выкинуть ее или кардинально переделать не так просто из-за правила: вот работает, давайте не будем это трогать...Только мне очевидно, что безопаснюки покусились на "не трогать"? И пошли вразрез с "политикой" говно не ворошить?

Ну если про 30 минут неактивности, то это не очень значительное изменение.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818572
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeНу если про 30 минут неактивности, то это не очень значительное изменение.А тема-то про что? Не борьбу безопасников с ветряными мельницами?
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818585
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeрешил сделать следующим образомЕсли ты разработчик, что мешает провести минимальную диагностику. Выяснить действительно ли установлено ограничение idle_time и в какую величину. Посмотреть, есть ли сессии превышающие эту величину.
...
Рейтинг: 0 / 0
Проблема exceeded maximum idle time, please connect again
    #39818591
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateealex-lsпропущено...

используйте не временные таблицы
Используется монстроидальная система, которую писали несколько десятков слабо взаимодействующих между собой программистов, в течение более десяти лет.
Выкинуть ее или кардинально переделать не так просто из-за правила: вот работает, давайте не будем это трогать...
тем более, теперь есть отличный предлог для того, чтобы разобраться, найти узкие места :)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема exceeded maximum idle time, please connect again
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]