Создание Массива Заданий

Рубрика: Планировщик задач

Более эффективным способом создать набор заданий является использование массива заданий.

Создание Массива Заданий

Массив заданий также применяется к легковесным заданиям. В примере на рисунке 100 спецификаций заданий создаются в массиве заданий и отправляются в очередь заданий в единственной транзакции.

Заметьте, что для легковесного задания имеется очень ограниченное количество необходимой информации. В примере, параметр start_time имеет значение по умолчанию NULL, таким образом, задание запланировано к немедленному запуску.

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

  2. Инициализируйте массив заданий, используя конструктор SYS.JOB_ARRAY. Это создает место для одного задания в массиве.

  3. Установите размер массива в число ожидаемых заданий.

  4. Создайте каждое задание и поместите его в массив. В примере на рисунке единственной разницей является имя задания. Переменная задания start_time опускается, и она принимает значение по умолчанию NULL, указывая, что задание сразу начнет работу.

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

Отметьте: Если массив будет небольшим, то производительность не будет значительно лучше чем подтверждение единственного задания.

Пример Создания Массива Заданий

Пример Создания Массива Заданий

Полный код этого примера:

DECLARE
 newjob sys.job;
 newjobarr sys.job_array;
BEGIN
 -- Create an array of JOB object types
 newjobarr := sys.job_array();
 -- Allocate sufficient space in the array
 newjobarr.extend(100);
 -- Add definitions for jobs
 FOR i IN 1..100 LOOP
   -- Create a JOB object type
   newjob := sys.job(job_name => 'LWTJK' || to_char(i),
                     job_style => 'LIGHTWEIGHT',
                     job_template => 'PROG_1',
	                 enabled => TRUE );
 -- Add job to the array
   newjobarr(i) := newjob;
 END LOOP;
 -- Call CREATE_JOBS to create jobs in one transaction
 DBMS_SCHEDULER.CREATE_JOBS(newjobarr, 'TRANSACTIONAL');
END;
/

Далее: Пороги и Разрешение Проблем свободного пространства

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)