powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Scheduler job с интервалом в 1 секунду
25 сообщений из 29, страница 1 из 2
Scheduler job с интервалом в 1 секунду
    #39410817
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
SQL> select * from v$version;
 
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production              0
PL/SQL Release 12.1.0.2.0 - Production                                                    0
CORE	12.1.0.2.0	Production                                                                0
TNS for Linux: Version 12.1.0.2.0 - Production                                            0
NLSRTL Version 12.1.0.2.0 - Production                                                    0

SQL> SELECT NAME, VALUE FROM V$parameter WHERE NAME IN ('_job_queue_interval','job_queue_processes');
 
NAME                                                                             VALUE
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
job_queue_processes                                                              100


SQL> BEGIN
  2  	dbms_scheduler.create_job(
  3  		job_name => 'TEMP_JOB1',
  4  		job_type => 'PLSQL_BLOCK',
  5  		job_action => 'BEGIN dbms_lock.sleep(0.3); END;',
  6  		repeat_interval => 'FREQ=SECONDLY;INTERVAL=1',
  7  		auto_drop => FALSE,
  8  		enabled => TRUE);
  9  END;
 10  /
 
PL/SQL procedure successfully completed
SQL> show errors
No errors


SQL> SELECT log_id, TO_CHAR(actual_start_date,'YYYY-MM-DD HH24:MI:SS') actual_start
  2  	FROM all_scheduler_job_run_details
  3  	WHERE job_name IN ('TEMP_JOB1')
  4  	ORDER BY log_id DESC;
 
    LOG_ID ACTUAL_START
---------- -------------------
    247060 2017-02-27 11:12:48
    247058 2017-02-27 11:12:43
    247056 2017-02-27 11:12:39
    247054 2017-02-27 11:12:35
    247052 2017-02-27 11:12:30
    247048 2017-02-27 11:12:26
    247046 2017-02-27 11:12:22
    247044 2017-02-27 11:12:18
    247042 2017-02-27 11:12:13
    247040 2017-02-27 11:12:09
    247038 2017-02-27 11:12:04
 
11 rows selected



Знаю, что Оракл не real time система, но саппорт баг признал, дали патч, патч не помог, ждём следующего патча.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410826
avas,

а зачем?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410839
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avasЗнаю, что Оракл не real time системаНо, тем не менее, продолжали грызть кактус.
avasно саппорт баг признал,Корпоративно толерантный индус вежливо не стал спорить с неадекватным клиентом?
avasдали патч,
Код: plsql
1.
alter system set "_job_queue_interval"=1

?
avasпатч не помог,Фимоз головного мозга не патчится.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410850
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_lock.спатьavas,

а зачем?

вызывать sync на oracle text индекс.
сейчас он на commit стоит, но с ним есть такая проблема, что если параллельно идёт много изменений одного параметра в xml (в разных записях, не одной) - то возникает много локов, и индекс обновляется медленно.
oracle text используем для быстрого поиска из UI
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410861
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicНо, тем не менее, продолжали грызть кактус.
на elastic за неделю не перейдёшь

Elic
Код: plsql
1.
alter system set "_job_queue_interval"=1

?

19417094

a _job_queue_interval помогает на 11, на 12 не помогает

ElicФимоз головного мозга не патчится.

Они стараются:
Thanks for your patience, we have created Predefect update with internal Bug Engineers and we will update soon
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410875
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicКорпоративно толерантный индус вежливо не стал спорить с неадекватным клиентом?

не понял, а о чём мы должны были спорить (к тому же у нас есть свой корпоративно толерантный индус)? Есть воспроизводимая проблема, значит или мы не правильно используем (тогда ожидаем что это будет официально написано, что interval = 1 sec ничего не гарантирует), или система работаем не в соответствии с документацией.
Они не стали говорить что так нельзя делать.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410877
avasdbms_lock.спатьavas,

а зачем?
вызывать sync на oracle text индексповесь триггер, который в очередь кидает событие. джоб на событие, который заглатывает все события, накопленные к моменту чтения очереди.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410879
avasdbms_lock.спатьavas,

а зачем?

вызывать sync на oracle text индекс.
сейчас он на commit стоит
А значение параметра
Код: plsql
1.
SYNC EVERY "interval-string"


тебе зачем сделали?
Или ты документацию принципиально не читаешь?

Прав Элик...
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410882
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
цтх_контекст
Код: plsql
1.
SYNC EVERY "interval-string"


тебе зачем сделали?
Или ты документацию принципиально не читаешь?

Прав Элик...

SYNC EVERY создаёт scheduler job, который и вызывает sync. Наблюдая как выполняется этот job и обнаружили проблему.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410883
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
монополовой доступповесь триггер, который в очередь кидает событие. джоб на событие, который заглатывает все события, накопленные к моменту чтения очереди.

шо? индекс и так позволяет создать sync on commit. а джоб не получается выполнять слишком часто.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410887
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avasЕсть воспроизводимая проблема, значит или мы не правильно используем (тогда ожидаем что это будет официально написано, что interval = 1 sec ничего не гарантирует), или система работаем не в соответствии с документацией.А голова-то на что?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410888
цтх_контекст
Код: plsql
1.
SYNC EVERY "interval-string"


полагаешь, указанное в every заносится в швейцарские часы?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410915
REQ_START_DATE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле вы не совсем на ту дату смотрите

Запрос показывающий детализацию (время постановки джоба в очередь на выполнение=REQ_START_DATE, реальное время запуска джоба=ACTUAL_START_DATE, и время записи в лог=LOG_DATE

Код: plsql
1.
2.
3.
select * from dba_scheduler_job_run_details
 where job_name = 'TEMP_JOB1'
ORDER BY log_id DESC;



Из этого следует что джоб в очередь на выполнение поставлен как раз с интервалом в секунду, только вот Oracle официально не гарантирует что джоб начнет выполняться сразу после постановки в очередь - задержка старта выполнения джоба может зависеть и от ко-ва выполняемых джобов в данный момент и от общей нагрузки на БД и тд и тп.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410951
ARlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или наглядно:
Код: plsql
1.
2.
3.
4.
5.
select job_name, log_date, req_start_date, actual_start_date,
 lead(req_start_date) over(order by log_id) - actual_start_date dlt
from all_scheduler_job_run_details
where job_name in ('TEMP_JOB1')
order by log_id;
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410957
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
REQ_START_DATEИз этого следует что джоб в очередь на выполнение поставлен как раз с интервалом в секунду, только вот Oracle официально не гарантирует что джоб начнет выполняться сразу после постановки в очередь - задержка старта выполнения джоба может зависеть и от ко-ва выполняемых джобов в данный момент и от общей нагрузки на БД и тд и тп.

точнее будет сказать, через секунду после последнего выполнения:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    LOG_ID REQ_START_DATE ACTUAL_START_DATE LOG_DATE
---------- -------------- ----------------- --------
    247666 13:50:55       13:50:58          13:50:59
    247664 13:50:51       13:50:54          13:50:54
    247662 13:50:47       13:50:50          13:50:50
    247660 13:50:42       13:50:46          13:50:46
    247658 13:50:37       13:50:41          13:50:41
    247656 13:50:33       13:50:36          13:50:37
    247654 13:50:29       13:50:32          13:50:32
    247652 13:50:24       13:50:28          13:50:28
    247650 13:50:20       13:50:23          13:50:24
    247648 13:50:16       13:50:19          13:50:19
    247646 13:50:12       13:50:15          13:50:15
    247642 13:50:07       13:50:11          13:50:11
    247640 13:50:03       13:50:06          13:50:06
    247638 13:50:01       13:50:02          13:50:02
    247636 13:49:57       13:50:00          13:50:00
    247632 13:49:56       13:49:56          13:49:56
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410966
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicА голова-то на что?

В отсутствии полных данных как оно работает внутри, полагаться на догадки и предположения тоже не есть хорошо. Голова говорит, что раз заявлена поддержка одно-секундного интервала, то в +/- 33% должно попадать.

Ну и в конце концов их индус нашего индуса не послал с аргументом что такое поведение by design
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410967
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avasраз заявлена поддержка одно-секундного интервалаГде?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410985
orcl2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avas,

Не пробовали Lightweight Jobs ?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39410992
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elicavasраз заявлена поддержка одно-секундного интервалаГде?

ладно, давайте переформулирую:

Есть документация на пакет dbms_scheduler - http://docs.oracle.com/database/122/ARPLS/DBMS_SCHEDULER.htm
Для параметра repeat_interval можно указывать следующие значения: FREQ - SECONDLY, INTERVAL - positive integer (default is 1, which means every second for secondly) - т.е. этой фразой и отсутствием какого-либо предупреждения о том что 1 second interval не будут работать стабильно - неявно (да, неявно, но другого ничего нет) говорят о том, что 1 second interval вполне нормально.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39411474
avas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orcl2avas,

Не пробовали Lightweight Jobs ?

пробовали, тоже самое:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SQL> BEGIN
  2  	dbms_scheduler.create_program(
  3  		program_name     => 'TEMP_PROGRAM3',
  4  		program_type     => 'PLSQL_BLOCK',
  5  		program_action   => 'BEGIN dbms_lock.sleep(0.3); END;',
  6  		enabled          => TRUE);
  7  END;
  8  /
 
PL/SQL procedure successfully completed
SQL> show errors
No errors

SQL> BEGIN
  2  	dbms_scheduler.create_job(
  3  		job_name				=> 'TEMP_JOB3',
  4  		job_style				=> 'LIGHTWEIGHT',
  5  		program_name		=> 'TEMP_PROGRAM3',
  6  		repeat_interval	=> 'FREQ=SECONDLY;INTERVAL=1',
  7  		enabled => TRUE);
  8  END;
  9  /
 
PL/SQL procedure successfully completed
SQL> show errors
No errors

SQL> SELECT log_id,
  2  			TO_CHAR(req_start_date,'HH24:MI:SS') req_start_date,
  3  			TO_CHAR(actual_start_date,'HH24:MI:SS') actual_start,
  4  			TO_CHAR(log_date,'HH24:MI:SS') log_date
  5  	FROM all_scheduler_job_run_details
  6  	WHERE job_name IN ('TEMP_JOB3')
  7  	ORDER BY log_id DESC;



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    LOG_ID REQ_START_DATE ACTUAL_START LOG_DATE
---------- -------------- ------------ --------
    252096 10:47:59       10:48:03     10:48:04
    252094 10:47:55       10:47:58     10:47:59
    252092 10:47:51       10:47:54     10:47:54
    252090 10:47:46       10:47:50     10:47:50
    252088 10:47:42       10:47:45     10:47:46
    252084 10:47:38       10:47:41     10:47:41
    252082 10:47:34       10:47:37     10:47:37
    252080 10:47:29       10:47:33     10:47:33
    252078 10:47:25       10:47:28     10:47:29
    252076 10:47:20       10:47:24     10:47:24
    252074 10:47:18       10:47:19     10:47:20
    252072 10:47:13       10:47:17     10:47:17
    252070 10:47:09       10:47:12     10:47:13
    252068 10:47:05       10:47:08     10:47:08
    252066 10:47:00       10:47:04     10:47:04
    252064 10:46:56       10:46:59     10:47:00
    252062 10:46:52       10:46:55     10:46:55
    252060 10:46:51       10:46:51     10:46:51
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39411532
alex_asd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разбирались с похожей поблемой года 3 назад на 11.2.0.4.
У нас генерилось достаточно большое количество джобов (сотни в секунду). Иногда запуск джобов начинал замедляться. При этом были видны ожидания у процесса CJQ (джоб координатор). Попробовали перевести все что смогли на lightweight и сократить до минимума информацию о джобах (поставили минимальные сроки хранения логов и т.п., проверили и почистили очереди и таблицы очередей), стало полегче, но проблема все равно проявлялась при пиковых нагрузках.
Завели тикет в поддержку, долго разбирались, ставили все патчи, которые так или иначе относятся к шедулеру, но ситуация не менялась. Подняли важность проблемы до максимального через наших американских коллег, но в итоге получили ответ, что механизм шедулера на такой юз кейс не рассчитан (к сожалению не могу цитировать точно, т.к. нет доступа к старому аккаунту поддержки) , т.е. ставить можно джобов сколько угодно, но вот то что они будут запускаться секунда в секунду никто гарантировать не может.
В итоге пришлось срочно писать обходной механизм, который исключил какую-то часть джобов.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39552036
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avas
Сейчас столкнулись с проблемой из этой области.
После миграции с 11.2 на 12-ю версию, начались проблемы по одному заданию.
Задание на старом приложении запускалось каждые 5 сек, через старый Job, где приложение каждый раз создавало 1 разовый. После миграции начались проблемы, что это задание просто отрубалось 1-2 раза в день. Причем ошибок никаких нигде не было, просто отрабатывало и отрубалось на уровне приложения.
Перевели механизм на dbms_scheduler так-же с интервалом в 5 сек. На пару дней забыли о проблеме, задание работало беспрерывно, нигде не отключалось, и казалось бы горя не знать, но поймали одну ошибку о медленном обновлении, поднял логи из all_SCHEDULER_JOB_RUN_DETAILS и обнаружил, что есть лаги, где от предыдущего до следующего выполнения задание где-то может шариться от 30-40 секунд до 23-х минут! . Причем никаких ошибок нигде нет. Везде успешные логи.
Кто сталкивался с такой проблемой? Есть варианты решения?
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39552108
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avasdbms_lock.спатьavas,

а зачем?

вызывать sync на oracle text индекс.
сейчас он на commit стоит, но с ним есть такая проблема, что если параллельно идёт много изменений одного параметра в xml (в разных записях, не одной) - то возникает много локов, и индекс обновляется медленно.
oracle text используем для быстрого поиска из UI

Гуглите small_r_row опцию для текстовых индексов.
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39552129
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
avas,

вам не нужен sync(on commit) - сделайте индекс TRANSACTIONAL и уменьшите частоту синхронизации до 5-15 минут.
Кроме того, с 12-й версии появилась такая хорошая штука как near realtime indexes -
http://www.oracle.com/technetwork/database/information-management/oracletext12cfeatures-1932547.pdf


зы. в 12-й версии с sync(on commit) и small_r_row есть адский баг с бесконечным циклом
...
Рейтинг: 0 / 0
Scheduler job с интервалом в 1 секунду
    #39552223
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyazavas
Сейчас столкнулись с проблемой из этой области.
После миграции с 11.2 на 12-ю версию, начались проблемы по одному заданию.
Задание на старом приложении запускалось каждые 5 сек, через старый Job, где приложение каждый раз создавало 1 разовый. После миграции начались проблемы, что это задание просто отрубалось 1-2 раза в день. Причем ошибок никаких нигде не было, просто отрабатывало и отрубалось на уровне приложения.
Перевели механизм на dbms_scheduler так-же с интервалом в 5 сек. На пару дней забыли о проблеме, задание работало беспрерывно, нигде не отключалось, и казалось бы горя не знать, но поймали одну ошибку о медленном обновлении, поднял логи из all_SCHEDULER_JOB_RUN_DETAILS и обнаружил, что есть лаги, где от предыдущего до следующего выполнения задание где-то может шариться от 30-40 секунд до 23-х минут! . Причем никаких ошибок нигде нет. Везде успешные логи.
Кто сталкивался с такой проблемой? Есть варианты решения?

UP
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Scheduler job с интервалом в 1 секунду
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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