powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / сложное расписание в dbms_scheduler
6 сообщений из 6, страница 1 из 1
сложное расписание в dbms_scheduler
    #40019583
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle 11.2.0.3 EE

чего хочется максимум:
- есть джобы, которые выполняются раз в 1-20 минут (разные джобы - разный интервал)
- хочется, чтобы джобы не работали на протяжении "специальных часов"
- "специальные часы" - это 4:00:00-4:59:59 во все дни плюс 1:00:00-3:59:59 во вторник

чего планировал сделать:
- именованные расписания weekly_pause и pause, в которую включить weekly_pause
- в самих джобах в качестве расписания использовать 'FREQ=MINUTELY;INTERVAL=x;EXCLUDE=pause'

не получилось ещё на этапе включения одного расписания в другое:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL>   exec dbms_scheduler.create_schedule( schedule_name=>'weekly_pause', repeat_interval=>'FREQ=MINUTELY;INTERVAL=1;BYDAY=WED;BYHOUR=1,2,3' );

PL/SQL procedure successfully completed


SQL>   exec dbms_scheduler.create_schedule( schedule_name=>'pause', repeat_interval=>'FREQ=MINUTELY;INTERVAL=1;BYHOUR=4;INCLUDE=weekly_pause' );
begin dbms_scheduler.create_schedule( schedule_name=>'pause', repeat_interval=>'FREQ=MINUTELY;INTERVAL=1;BYHOUR=4;INCLUDE=weekly_pause' ); end;

ORA-27422: usage of BYHOUR not supported in embedded calendar application "TEST"."WEEKLY_PAUSE"
ORA-06512: at "SYS.DBMS_ISCHED", line 997
ORA-06512: at "SYS.DBMS_SCHEDULER", line 1486
ORA-06512: at line 1



так тоже не работает:


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> exec dbms_scheduler.create_schedule( schedule_name=>'daily_pause', repeat_interval=>'FREQ=MINUTELY;INTERVAL=1;BYHOUR=4' );

PL/SQL procedure successfully completed


SQL> exec dbms_scheduler.create_job( job_name=>'test', job_type=>'PLSQL_BLOCK', job_action=>'null;', repeat_interval=>'FREQ=MINUTELY;INTERVAL=10;EXCLUDE=daily_pause' );
begin dbms_scheduler.create_job( job_name=>'test', job_type=>'PLSQL_BLOCK', job_action=>'null;', repeat_interval=>'FREQ=MINUTELY;INTERVAL=10;EXCLUDE=daily_pause' ); end;

ORA-27422: usage of BYHOUR not supported in embedded calendar application "TEST"."DAILY_PAUSE"
ORA-06512: at "SYS.DBMS_ISCHED", line 124
ORA-06512: at "SYS.DBMS_SCHEDULER", line 271
ORA-06512: at line 1




вопрос: что я делаю не так?
...
Рейтинг: 0 / 0
сложное расписание в dbms_scheduler
    #40019590
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходил мимо...,

DBMS_SCHEDULER.CREATE_WINDOW смотрел?
...
Рейтинг: 0 / 0
сложное расписание в dbms_scheduler
    #40019592
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WINDOW не предлагать?
...
Рейтинг: 0 / 0
сложное расписание в dbms_scheduler
    #40019609
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oragraf, andrey_anonymous,

спасибо - пошёл смотреть..
...
Рейтинг: 0 / 0
сложное расписание в dbms_scheduler
    #40019623
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросы:

1. зачем мне window? я не собираюсь открывать никакой ресурс-план. только ради window groups?
2. правильно ли я понимаю, что window group допускает только добавления окон, но не исключения из них?
3. правильно я понимаю, что windows - это полное расписание? в том смысле, что если мне нужны джобы (их реально много), работающие раз в 2,5,10,15 минут и начинающиеся в разные минуты часа, мне потребуется на каждую из них своя window group, состоящая из своих windows?

и последнее.
exclude в repeat_interval таки не работают от слова "совсем" или я его просто как-то не так использую?
...
Рейтинг: 0 / 0
сложное расписание в dbms_scheduler
    #40019763
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходил мимо...,

спрашивали - отвечаем:

How To Exclude A Certain Window In A Schedule For A Day Using DBMS_SCHEDULER Package (Doc ID 461432.1)Note: The exclude, include intersection options works only on a full day basis, part of a day cannot be excluded,included or intersected.

про мою задачу:

работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SQL> exec dbms_scheduler.create_schedule( schedule_name=>'tue_runs', repeat_interval=>'FREQ=MINUTELY;INTERVAL=10;BYDAY=TUE;BYHOUR=0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23' );

PL/SQL procedure successfully completed


SQL> exec dbms_scheduler.create_schedule( schedule_name=>'std_runs', repeat_interval=>'FREQ=MINUTELY;INTERVAL=10;BYDAY=MON,WED,THU,FRI,SAT,SUN;BYHOUR=0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23' );

PL/SQL procedure successfully completed


SQL> exec dbms_scheduler.create_schedule( schedule_name=>'all_runs', repeat_interval=>'tue_runs,std_runs' );

PL/SQL procedure successfully completed


SQL> exec dbms_scheduler.create_job( job_name=>'test', job_type=>'PLSQL_BLOCK', job_action=>'null;', repeat_interval=>'all_runs' );

PL/SQL procedure successfully completed



т.е. таки без окон, но по три расписания на каждый интервал и смещения запуска джоба. можно по два, но на мой взгляд менее сопровождаемо, особенно, если появятся ещё периоды неработы.

грустно. вероятно буду думать в сторону Using a PL/SQL Expression
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / сложное расписание в dbms_scheduler
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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