Oracle как запустить джоб

Обновлено: 04.07.2024

До версии Oracle 10g в запланированной задаче использовался пакет DBMS_JOB, и для замены версии 10g была введена DBMS_SCHEDULER.
Предыдущий DBMS_JOB с точки зрения функций обеспечивает более мощные функции и более гибкий механизм управления, чем DBMS_JOB.


1. DBMS_JOB


1、Просмотр максимального числа одновременных запланированных задач в базе данныхОбычно устанавливается на 10

2. Установите максимальное количество одновременных запланированных задач в базе данных.Если установлено значение 0, запланированное задание базы данных не будет выполнено.

3. Рабочие инструкции:

4. Создайте пример работы 1:

Интервал выполнения заданияОписание параметра интервала

5. Создать вариант работы 2:

Последний параметр 'sysdate + 1/1440' указывает, что интервал времени равен каждой минуте. Другие обычно используемыеНастройка интерваласледующим образом:
(1) Если вы хотите выполнять каждый день в 1 час ночи, этот параметр может быть установлен в''trunc (sysdate) +25/24 ';
(2) Если вы хотите выполнять в 1:00 каждый понедельник, для этого параметра можно установить значение'runc (next_day (sysdate, 1)) + 25/24 ';
(3) Если вы хотите выполнить в 1:00 1-го числа каждого месяца, этот параметр можно установить в''trunc (last_day (sysdate)) + 25/24 ';
(4) Если вы хотите выполнять один раз в квартал, этот параметр можно установить в''trunc (add_months (sysdate, 3), 'Q') + 1/24 ';
(5) Если вы хотите выполнять один раз каждые шесть месяцев, этот параметр может быть установлен в 'add_months (trunc (sysdate,' yyyy '), 6) +1/24';
(6) Если вы хотите выполнять его один раз в год, этот параметр может быть установлен в 'add_months (trunc (sysdate,' yyyy '), 12) +1/24'.

6. Операция просмотра задания планирования работы

7. Работа с другими операциями
(1) Начни работу

(2) Удалить работу: dbms_job.remove (jobno);
(3) Измените операцию для выполнения задания: dbms_job.what (jobno, what);
(4) Измените следующее время выполнения: dbms_job.next_date (job, next_date);
(5) Интервал модификации: dbms_job.interval (задание, интервал);
(6) Остановить работу: dbms.broken (работа, сломана, следующая дата);

Во-вторых, DBMS_SCHEDULER

1. Функция DBMS_SCHEDULER более мощная, определение более гибкое, а взаимодействие с системой улучшено.
Есть два способа определить «план»:
(1) Использовать DBMS_SCHDULER.CREATE_SCHEDULE // определить план, запланировать повторный вызов задания;
(2) Вызов DBMS_SCHDULER.CREATE_JOB // Процесс непосредственно определяет задание

2. Создать сценарий DBMS_SCHEDULER 1: Создать работу напрямую с DBMS_SCHDULER.CREATE_JOBE

Описание параметра:
•job_name: Как следует из названия, каждое задание должно иметь имя, чтобы обеспечить уникальность указанного имени. Обязательное значение.
•job_type: Тип операции, выполняемой задачей, в настоящее время поддерживает следующие типы, обязательные значения.
(1)PLSQL _BLOCK Указывает, что выполнение задачи является анонимным блоком PL / SQL.
(2)STORED_PROCEDURE : Указывает, что задача выполняет процесс ORACLE (включая PL / SQL PROCEDURE и JAVA PROCEDURE).
(3)EXECUTABLE Указывает, что задача выполняет внешнюю программу, например команду операционной системы.
(4)CHAIN : Указывает, что задача является ЦЕПЬЮ.
•JOB_ACTION : Операция, выполняемая задачей, обязательное значение, должно соответствовать параметрам, указанным в типе JOB_TYPE.
Например, для анонимных блоков PL / SQL здесь могут быть размещены конкретные представители блоков PL / SQL, аналогично DECLARE, BEGIN, END;
Если это процесс ORACLE, то здесь должно быть указано конкретное имя процесса. Обратите внимание, что из-за выполнения задачи, даже если в процессе есть OUT-подобные параметры,
Там не будет никакого вывода во время фактического выполнения.
•START_DATE : Укажите время, когда задача выполняется в первый раз. Этот параметр может быть пустым. Если он пуст, это означает, что задача будет выполнена немедленно.
Эффект эквивалентен указанию значения параметра SYSDATE.
•REPEAT_INTERVAL : Укажите частоту выполнения задачи, например, как долго она будет запущена для повторного выполнения. Этот параметр также может быть пустым,
Если оно пустое, это означает, что заданная в данный момент задача выполняется только один раз.
Грамматическая структура параметра REPEAT_INTERVAL является относительно сложной, наиболее важными из которых являются два ключевых слова FREQ и INTERVAL.
(1 ) Ключевое слово FREQ Используется для указания периода времени интервала, необязательные параметры: YEARLY, MONTHLY, WEEKLY, DAILY,
ЧАСЫ, МИНУТЫ, ВТОРОЙ, представляющие такие единицы, как год, месяц, неделя, день, час, минута, секунда и т. Д.
(2) Ключевое слово INTERVAL Используется для указания частоты интервала, диапазон значений, который можно указать, составляет от 1 до 99.
Например: REPEAT_INTERVAL => 'FREQ = DAILY; INTERVAL = 1'; означает выполнение один раз в день,
Если вы измените ИНТЕРВАЛ на 7, это означает, что он будет выполняться каждые 7 дней. Эффект эквивалентен FREQ = WEEKLY; INTERVAL = 1.
.END_DATE : Задает срок действия задачи. Значение по умолчанию - NULL. После того, как задача истекает, состояние задачи будет автоматически изменено на ЗАВЕРШЕНО,
ENABLED установлен в FALSE. Если для этого параметра установлено пустое значение, это означает, что срок действия задания никогда не истечет, и он всегда будет следовать за REPEAT_INTERVAL.
Цикл установки параметров повторяется до тех пор, пока не будет достигнуто установленное значение MAX_RUNS или MAX_FAILURES.
•JOB_CLASS : Определяет CLASS, связанный с задачей. Значением по умолчанию является DEFAULT_JOB_CLASS.
•ENABLED : Указывает, включена ли задача, значением по умолчанию является ЛОЖЬ. Состояние FALSE означает, что задача не будет выполнена, пока пользователь не вызовет ее вручную,
Или пользователь может изменить статус задачи на ИСТИНА.
•AUTO_DROP : Если флаг установлен в значение ИСТИНА, ORACLE автоматически удалит созданную задачу при выполнении условий
(1) Задание истекло;
(2) Максимальное количество запущенных задач достигло значения настройки MAX_RUNS;
(3) Задача не указывает параметр REPEAT_INTERVAL, выполняется только один раз;
•COMMENTS : Задайте информацию о комментарии для задачи. Значение по умолчанию - NULL.

Описание выражений календаря:MON означает понедельник, SUN - воскресенье, DAY - каждый день, WEEK - каждую неделю и так далее.
Конкретные примеры следующие:

3. Создать сценарий DBMS_SCHEDULER 2

Примечание: включен по умолчанию false, оракул не будет запускать это задание, поэтому нам нужно включить его

4. Создайте DBMS_SCHEDULER, вариант 3, используйте DBMS_SCHDULER.CREATE_SCHEDULE.
Создайте планировщик (управляйте временем и частотой), а затем добавьте в него несколько заданий (действий).
Шаг 1. Создайте планировщик: «zbb_schedule»

Шаг 2: Добавьте работу "zbb_job2" в "zbb_schedule"

Шаг 3: Добавьте работу "zbb_job3" в "zbb_schedule"

Шаг 4: Добавьте задание "zbb_job1" в "zbb_schedule", но процесс изменения атрибутов выполнен

5. Просмотр всех заданий в расписании.

6. Удалите работу в планировщике

7. Удалить планировщик

8. Измените атрибуты задания (частота: частота)

9. Начни работу, Когда рабочие места созданы, они находятся в состоянии «отключено». Мы должны «включить» его вручную.

Введение
В Oracle есть специальный механизм запланировать выполнение определённой программы, на заданное время, это может быть оператор SQL, программа на языке PLSQL, либо даже внешняя программа. Этот механизм называется механизмом заданий Job

Данный механизм может применяться, например, для планирования запуска тяжелых запросов в ночное время или на выходные дни, распределения задач построения отчетности.

Теория и практика

Для управления заданиями в Oracle существует специальные пакет DBMS_JOB:
Создание заданий
Можно использовать механизм dbms_job
Или механизм dbms_scheduler – более современный способ

Задание будет выполняться ровно в 10 часов каждого дня

Задание будет выполняться ровно в 11 часов 15 минут каждого дня.

Задание будет выполняться ровно в n часов m минут последнего дня каждого месяца.

Задание будет выполняться ровно в n часов m минут первого дня каждого месяца.

NO_PARSE - флаг разбора PL/SQL выражения. Если его значение равно FALSE разбор происходит в момент установки задания. Иначе, в момент выполнения задания.

INSTANCE - какой экземпляр производит выполнение задания

FORCE – если значение этого параметра истинно тогда в качестве INSTANCE может выступать любое положительное целое число. В противном случае экземпляр, указанный в INSTANCE должен быть обязательно запущен, иначе будет вызвано исключение.
Пример2 создания задания

Таблица будет очищаться каждый день в один час пять минут

Пример2 создания задания

Таблица будет очищаться каждый день в три часа пять минут и заполняться данными из AUTO1
Пример3 создания задания

Таблица будет очищаться каждый день в три часа пять минут и заполняться данными из AUTO1
Удаления задания можно сделать следующей процедурой:

Здесь
JOB – идентификатор задачи
Выключение задания
Бывают случаи, когда задание временно не должно выполняться. Для этого совсем необязательно его удалять. Достаточно его просто выключить. Выключение (включение) задания производится установкой специального флага состояния - BROKEN. Делается это с помощью следующей процедуры:

Просмотр всех заданий
Для просмотра всех заданий используются следующие таблицы DBA_JOBS, ALL_JOBS и USER_JOBS.
• DBA_JOBS – показывает все задания (JOB)
• ALL_JOBS -показвает задания (JOB) текущего пользователя
• USER_JOBS -показывает задания (JOB) текущего пользователя

Важные замечания
Вычисление NEXT_DATE с помощью формулы интервала происходит после выполнения задания. Поэтому, всегда учитывайте это время и старайтесь не ставить их на время близкое к окончанию суток из-за возможного неправильного расчёта следующей даты выполнения.

При создании задания или изменения его параметров ORACLE записывает текущие параметры NLS владельца. Эти параметры каждый раз восстанавливаются при выполнении задания. Это может приводить к некоторым ошибкам в случае ожидания других значений. Поэтому если необходимо лучше производить установку нужных NLS значений с помощью команды ALTER SESSION в параметре WHAT задания.

Задания в теле завершаются COMMIT;

Вопросы учеников
Есть ли еще способы создать задние используя планировщик заданий.
Да есть более современный метод DBMS_SCHEDULLER
Как создать задание которое бы выполнялось каждые полдня
Пример задания

Спасибо. Люблю такие вот развернутые советы и рекомендации.К сожалению часто встречаются варианты - вот те бе это и это а все остально допонимай сам

Просто как замечание, не как критика автора поста.
Вместо dbms_job теперь (начиная с 10-ки) следует использовать dbms_scheduler, у которого больше возможностей по настройке и применению.
"The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package"(c)

  • Главная /
  • Статьи /
  • Oracle /
  • Практическое администрирование Oracle - Ожидание Library cache pin. Часть 2.

Задания в Oracle9i

В Oracle существует возможность запланировать выполнение определенного набора действий в виде заданий. Задание может, представляет собой хранимую процедуру, анонимный блок PL /SQL, внешнюю процедуру на языке C или Java. Время выполнения может иметь значение любого времени суток и подчинятся заданному интервалу. Это хорошо подходит для переноса тяжёлых в обработке расчётов на менее загруженное ночное время. По умолчанию выполнение заданий выключено. Поэтому надо провести небольшую дополнительную настройку сервера.

Настройка сервера

Для того чтобы задания начались выполняться необходимо, установить параметр инициализации JOB_QUEUE_PROCESSES. Изначально он имеет значение 0 и задаёт максимальное количество фоновых процессов для выполнения заданий. В версии Oracle 9.2 максимальное значение этого параметра может составлять 1000. На практике же обычно можно ограничиться не более 5 процессами. В любом случае вы всегда можете изменить это значение с помощью команды ALTER SYSTEM SET без перезагрузки сервера. Итак, для начала внесем новую строчку в файл инициализации и перезагрузим сервер:

В файле alert.log мы увидим, что в момент, когда стартуют фоновые процессы, у нас появилось новая запись:

Это стартовал новый фоновый процесс CJQ0, так называемый координатор заданий. Что он делает и для чего он нужен, мы рассмотрим чуть ниже, а на этом предварительную настройку сервера можно считать законченной.

Процессы

Итак, процесс координатора заданий запущен, и как можно догадаться из его названия именно этот процесс осуществляет общее управление всеми заданиями. Для начала он выбирает таблицу SYS.JOB$, в которой хранятся параметры заданий. Если среди заданий имеются те, которые будут выполняться в ближайший интервал времени указанный в скрытом параметре _JOB_QUEUE_INTERVAL (по умолчанию его значение составляет 5 секунд), то для них порождаются фоновые процессы очереди заданий Jnnn, которые в свою очередь создают сеансы для непосредственного выполнения запланированных действий. Именно максимальное количество процессов Jnnn, которые могут быть одновременно запущены и отражает настраиваемый параметр JOB_QUEUE_PROCESSES.

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

Выставляйте значение параметра JOB_QUEUE_PROCESSES чуть больше максимального количества одновременно запускаемых заданий. Маленькое значение может привести к сдвигу времени выполнения из-за конкуренции за процессы Jnnn. Большое значение к неоправданному запуску этих же процессов в исключительных ситуациях.

Создание заданий

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

Опишем параметры этой процедуры:

JOB - это идентификатор задания. Имеет уникальное значение для каждого задания, генерируемое системной последовательностью. Является выходным параметром. Его лучше запомнить, если потребуются дальнейшие действия над заданиями.

WHAT - тело задания. Представляет собой анонимный PL/SQL блок. Всё что здесь указано, будет выполнено в процессе работы задания. Если вы запускаете только одну процедуру, то можно не заключать её в блок достаточно поставить в конце названия процедуры точку с запятой. Значение WHAT в этом случае автоматически будет помещено в PL/SQL блок. Если процедура имеет строковые параметры, то они обязательно должны заключаться в две одинарные кавычки с каждой стороны. В PL/SQL блоке можно также писать DML и DDL команды, но нельзя производить создание и запуск заданий. Это только приведёт к ошибке ORA-32317. Если же используются ссылки на удалённую базу данных, то они должны явно включать имя и пароль. Анонимные ссылки здесь не поддерживаются. И, наконец, владельцу задания требуется явно предоставить привилегии, на объекты, используемые в теле задания.

NEXT_DATE - дата следующего выполнения задания. Время непосредственно задаётся владельцем или автоматически вычисляется Oracle.

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

INTERVAL - формула интервала времени. Представляет собой DATE функцию. Именно от её правильного значения будет зависеть дата следующего выполнения задания казанного в столбце NEXT_DATE. Приведём некоторые примеры формулы интервала задания:

Задание будет выполняться ровно в n часов m минут каждого дня.

Задание будет выполняться ровно в n часов m минут последнего дня каждого месяца.

Задание будет выполняться ровно в n часов m минут первого дня каждого месяца.

Учитывайте, что вычисление NEXT_DATE с помощью формулы интервала происходит после выполнения задания. Поэтому всегда учитывайте это время и старайтесь не ставить их на время близкое к окончанию суток из-за возможного неправильного расчёта следующей даты выполнения.

NO_PARSE - флаг разбора PL/SQL. Если его значение равно FALSE разбор происходит в момент установки задания. Иначе, в момент выполнения задания.

INSTANCE - какой экземпляр производит выполнение задания.

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

При создании задания или изменения его параметров ORACLE записывает текущие параметры NLS владельца. Эти параметры каждый раз восстанавливаются при выполнении задания. Это может приводить к некоторым ошибкам в случае ожидания других значений. Поэтому если необходимо лучше производить установку нужных NLS значений с помощью команды ALTER SESSION в параметре WHAT задания.

В качестве примера создадим простое задание, которое при запуске будет делать паузу в 20 секунд, первый раз выполниться 1 января 2006 года в 1 час 5 минут и будет повторяться каждый день в то же самое время.

Изменение задания

И так задание создано. Теперь попробуем изменить некоторые его параметры. Для изменения доступны следующие параметры задания: WHAT, NEXT_DATE, INTERVAL и INSTANCE. Их можно менять все одновременно или по отдельности. К примеру, следующая процедура пакета меняет все три параметра, при этом следует учитывать, что если какой либо из них равен NULL, то значение параметра не изменится.

А вот уже эта процедура меняет значение только параметра WHAT:

Также с параметрами NEXT_DATE,INTERVAL,INSTANCE:

В качестве примера, увеличим паузу, которое делает задание, созданное ранее, до 30 секунд и изменим, время повторного запуска задания на 3 часа 15 минут:

Изменить параметры или совершать другие действия над заданием можно только его владельцу. В противном случае возникнет ошибка ORA-23421: job number 24 is not a job in the job queue.

Удаление задания

Если задание становиться ненужным, то его можно удалить. Сделать это можно следующей процедурой:

Выключение задания

Бывают случаи, когда задание временно не должно выполняться. Для этого совсем необязательно его удалять. Достаточно его просто выключить. Выключение (включение) задания производится установкой специального флага состояния - BROKEN. Делается это с помощью следующей процедуры:

Если флаг BROKEN имеет значение истинно, то такое задание считается разрушенным и выполняться не будет. Параметр NEXT_DATE определяет здесь дату следующего выполнения задания и действует только при его включении.

В момент выключения задания параметр NEXT_DATE устанавливается в максимальное значение даты. Если не указать параметр NEXT_DATE в момент включения, то задание начнёт выполняться немедленно.

Для примера выключим задание:

Вынужденное выполнение задания

Если необходимо запустить задание в текущий момент времени, то сделать это можно с помощью следующей процедуры пакета:

Если параметр FORCE имеет значение ложно, то задание может быть выполнено в приоритетном режиме только в указанном экземпляре, иначе .

Задание выполняется в текущем сеансе, при этом повторно инициализируются пакеты текущего сеанса, и происходит неявная фиксация транзакции.

Экспорт задания

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

Переменная mycall будет при этом содержать текст команды, с помощью которой можно заново создать задание.

Контроль задания

Как было указано выше, координатор заданий обращается в своей работе к системной таблице SYS.JOB$, хранящей описания всех заданий. На эту таблицу существуют три представления: DBA_JOBS, ALL_JOBS и USER_JOBS. Они наиболее часто используются для контроля над заданиями. Рассмотрим их некоторые столбцы:

  • JOB, NEXT_DATE, INTERVAL, WHAT, INSTANCE - эти столбцы знакомы нам по процедуре SUBMIT.
  • LOG_USER - пользователь под которым была создано задание. Фактически это и есть владелец задания.
  • PRIV_USER - пользователь привилегии которого используются для выполнения задания.
  • SCHEMA_USER - схема по умолчанию для разбора задания.
  • LAST_DATE (LAST_SEC) - дата (время) последнего успешного выполнения задания.
  • THIS_DATE (THIS_SEC) - дата (время) начала выполнения задания.
  • TOTAL_TIME - общее время выполнения задания в секундах. Содержит суммарное время длительности всех выполнений задания.
  • BROKEN - этот столбец показывает состояние флага разрушенного задания. Если значение равно Y задание выполняться не будет.
  • FAILURES - количество неудачных попыток выполнить задание. Максимальное значение может достигать 16.
  • NLS_ENV - NLS параметры сеанса. Соответствуют параметрам сеанса, в котором задание создавалось.

Кроме вышеперечисленных представлений существует и ещё одно - DBA_JOBS_RUNNING. Оно показывает задания, которые выполняются в текущий момент времени. С его помощью можно легко определить SID сеанса выполняемого задания.

Блокировки

Если подробнее разобрать представление DBA_JOBS_RUNNING, то можно увидеть что в его основе лежит соединение таблицы SYS.JOB$ и представления V$LOCK. Кажется, какая тут есть связь? Оказывается, есть и самая прямая. Для того чтобы гарантировать, что данное задание выполняется одновременно только в одном сеансе, Oracle выставляет блокировку JQ. Это можно хорошо видеть, сделав запрос к представлению V$LOCK во время выполнения задания:

При этом столбец ID2 будет указывать на идентификатор выполняемого задания.

Ошибки

Прерывание задания

Мне нужно его стартовать так, что бы дата не сбилась, то бишь если в нем прописана next_date завтра, а я делаю broken = false, то он не стартанул сразу же.

Я просто что-то так и не нагуглил инфы. Как остановить job есть инфа, и как стартануть job есть инфа, но так, что бы он сразу и отработал, а так как мне нужно, видимо не там гуглю.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Запуск студией и запуск самой виндой. Разница работы программы
Итак, проблема такова: есть проект, который замечательно работает при нажатии F5 в студии. При.


Запуск в батнике - команды на запуск файла (из консоли с правами администратора)
Добрый день, форумчане. Помогите решить вопрос. Существует файл, которого нужно часто запускать.

Автоматический запуск/запуск с клавиатуры или ПК живет своей жизнью =)
Всем привет и с наступающим! У меня такая беда, которая случилась где-то месяца 2 назад: .

Запуск сначала одного видео, потом по событию - запуск второго видео
У меня при заходе на сайт, весь сайт немного затемняется и делается не активным (ни ссылку ни.

Потом остановить, сделать нечто и снова стартануть. Только непонятно, зачем останавливать, если следующий старт будет только завтра? Может и не надо вовсе делать broken=true ?

Ведь в дате прописан не только день, но и часы с минутами и секундами

Добавлено через 5 минут
К тому же, если сделано broken=true, насколько я знаю, дата автоматически меняется на 4000 год, так что полезной информации Вы, скорее всего, не извлечете

Добавлено через 4 минуты
А вот LAST_DATE, время последнего выполнения, Вы извлечь, скорее всего, сможете. То есть, Вам придется к LAST_DATE как-то применить функцию INTERVAL и самому получить новую дату старта

Нужно остановить job и удалить вьюхи, которые на основе его выполнения заполняются. Причина такая потому, что job лезет в базу, которую вывели из эксплуатации, выдает connection timeout. А просто удалить вьюху я не могу, вешается сессия.
Были случаи когда я мог делитнуть джоба и вьюха сразу удалялась, сейчас нельзя джобу удалять удалить вьюхи, которые на основе его выполнения заполняются Как view могут чем-то заполняться (если это конечно не matview)? Тогда совершенно непонятно, зачем перезапускать job, который все равно снова повиснет, да еще и в строго определенный момент времени. Тогда совершенно непонятно, зачем перезапускать job, который все равно снова повиснет

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

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

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

. Но, тем не менее, что мешает создать "слепок" с текущих джобов, например так:

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

Добавлено через 17 минут
Я тоже, вслед за

, начинаю склоняться к мысли, что речь идет о материализованных представлениях.
По-моему, объект нельзя дропнуть тогда, он когда как-то используется в сесииях (необязательно активных). Есть системные вьюхи, позволяющие найти объекты, удерживаемые сессиями. В некоторых случаях мы убивали все сессии, работающие с объектом, если возникала необходимость срочно его видоизменить, например. Может здесь тоже можно сделать что-то подобное, ну или, хотя бы проанализировать, кто и что держит Как view могут чем-то заполняться (если это конечно не matview)? начинаю склоняться к мысли, что речь идет о материализованных представлениях.

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

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

Все что мне нужно, это остановить джоб, как вы уже сказали "дата автоматически меняется на 4000 год", по этому что бы корректно восстановить время его запуска, мне нужно было знать, можно ли как то проделать сие действия, не сбивая next_date

Только еще хочу напомнить, что удаление объектов в базе может привести к тому, что какие-то другие объекты станут инвалидными, и что-нибудь может посыпаться в самый неподходящий момент

П.С. Я так понимаю, что так, как я хочу сделать нельзя. Тобишь, нужно или в функции делать лог запуска, или мигрировать в sheduler. Значит займусь первым вариантом

Читайте также: