Запустить на выполнение хранимую процедуру и отключиться

Igor Vitaliev
Дата: 07.12.2007 18:10:41
Необходимо запустить на сервере хр. процедуру с параметрами, и, не дожидаясь ее окончания, отключиться. Свое текущее состояние, результаты работы/ошибки процедура пишет в таблицу, которую можно просматривать паралельно ее работе. Проблема в том, как запустить эту процедуру так, чтобы даже разрыв соединения с базой не привел к ее остановке?
зы
Дата: 07.12.2007 18:12:26
dbms_job, а в десятке dbms_scheduler
Igor Vitaliev
Дата: 07.12.2007 18:18:19
зы
dbms_job, а в десятке dbms_scheduler

Смотрел эти пакеты, попробовал тестовый пример реализовать - ничего не получилось :( DBMS_JOB.SUBMIT отрабатывает без ошибок, но SELECT * FROM all_jobs - пусто. С dbms_scheduler даже толком не понял с какой стороны подойти... Нужно ли настраивать какие-то доп. параметры в самой БД (10.2.0)? Может кто-то по шага расписать что и в какой последовательности нужно делать?
Elic
Дата: 07.12.2007 18:22:00
Igor Vitaliev
DBMS_JOB.SUBMIT отрабатывает без ошибок, но SELECT * FROM all_jobs - пусто.
STFF Проблема удаления джобов
Igor Vitaliev
Дата: 07.12.2007 18:39:25
Elic
Igor Vitaliev
DBMS_JOB.SUBMIT отрабатывает без ошибок, но SELECT * FROM all_jobs - пусто.
STFF Проблема удаления джобов

Хм... честно говоря не понял, что для меня полезного в указанном топике.

Попробую уточнить, что я хочу получить: запуск задачи инициирует только клиент, ни о каком расписании и запуске автоматом речь не идет. Поскольку задача длительная, есть риск, что клиет отвалится. Процедура все равно должна отработать до конца. Когда и с какими параметрами процедура будет запущена в следующий раз - не известно, это решает только пользователь. Есть ли смысл связываться с JOB\'ами? Ведь вначале джоб нужно создать, потом запустить, зная его номер, и по хорошему его же нужно и удалить. Может можно как-то по другому обойтись?
Mikst
Дата: 07.12.2007 18:49:44
читай про DBMS_SCHEDULER - задание само запуститься, отработает и исчезнет (drop=>true)
orawish
Дата: 07.12.2007 18:53:58
Igor Vitaliev
Elic
Igor Vitaliev
DBMS_JOB.SUBMIT отрабатывает без ошибок, но SELECT * FROM all_jobs - пусто.
STFF Проблема удаления джобов

Хм... честно говоря не понял, что для меня полезного в указанном топике.

Попробую уточнить, что я хочу получить: запуск задачи инициирует только клиент, ни о каком расписании и запуске автоматом речь не идет. Поскольку задача длительная, есть риск, что клиет отвалится. Процедура все равно должна отработать до конца. Когда и с какими параметрами процедура будет запущена в следующий раз - не известно, это решает только пользователь. Есть ли смысл связываться с JOB\'ами? Ведь вначале джоб нужно создать, потом запустить, зная его номер, и по хорошему его же нужно и удалить. Может можно как-то по другому обойтись?
Читайте доку. Сейчас ваше представление о сабж. блуждает от
не совсем так до совсем не так.
Elic
Дата: 07.12.2007 18:56:54
Igor Vitaliev
Хм... честно говоря не понял, что для меня полезного в указанном топике.
Толстый намёк на типичную ошибку начинающих.
Igor Vitaliev
Ведь вначале джоб нужно создать, потом запустить, зная его номер, и по хорошему его же нужно и удалить.
Запустится, один раз отработает и пропадёт. Всё автоматом при надлежащей настройке.
Igor Vitaliev
Может можно как-то по другому обойтись?
Зачем?
Oleg M.Ivanov
Дата: 07.12.2007 18:58:22
Я бы сделал job, который проверяет наличие флага в какой-нибудь табличке и делает нужные действия. В этой же табличке состояние работы процедуры выполняющейся по job, типа работаю, отработал, отработал с ошибкой... и т.д.
Идея состоит в том, что внешний пользователь подключившись смотрит в эту табличку и, если нужно(смотрит на другие флаги), устанавливает флаг на выполнение.
Elic
Дата: 07.12.2007 19:05:39
Oleg M.Ivanov
устанавливает флаг на выполнение.
Не надо постоянного задания. Лучше по флажку ставить его в очередь.