Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 dbms_job и interval  [new]
Moss
Member

Откуда:
Сообщений: 182
Всем добрый день!

есть сабмит джоба:
begin
  sys.dbms_job.submit(job => 123123,
                      what => 'my_package.my_procedure;',
                      next_date => to_date('05-11-2016 15:50:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate + 1/(24*60) * 1440');
  commit;
end;
/


interval => 'sysdate + 1/(24*60) * 1440
т.е. я его создал в 15:00 то он и будет выполнятся каждый день в 15:00

Подскажите, плиз, как можно сделать интервал к примеру с 15:00 до 18:00 каждые 30 мин ?
В доке написано:
interval - Date function, evaluated immediately before the job starts running.

Я правильно понимаю что я могу создать отдельную процедуру по вычитке времени и объявить ее переменной в declare и в interval ?

Спасибо!
4 ноя 16, 17:32    [19859024]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1639
Moss, уже давно The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package, там возможностей намного больше.
4 ноя 16, 17:47    [19859038]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Moss
Member

Откуда:
Сообщений: 182
dmdmdm,
Спасибо, видел.
Нj от меня тут мало что зависит - ПО внешнее ((
сказали что нужен именно dbms_job.submit

Но за "уточнение" спасибо!
4 ноя 16, 18:01    [19859060]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Moss
Member

Откуда:
Сообщений: 182
CREATE OR REPLACE FUNCTION my_interval_for_job
RETURN DATE
IS
myintervar DATE;
BEGIN
SELECT
CASE
WHEN TO_CHAR(SYSDATE, 'HH24:MI') BETWEEN '15:00' AND '18:00'
THEN SYSDATE + 1/(24*60)*10
END
INTO myintervar
FROM dual;
RETURN myintervar;
END;
/
4 ноя 16, 18:08    [19859079]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
Moss
Я правильно понимаю что я могу создать отдельную процедуру по вычитке времени и объявить ее переменной в declare и в interval ?
Не обязательно. what - это PL/SQL код, в котором можно читать/писать специальные переменные - STFF
4 ноя 16, 18:47    [19859148]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
dmdmdm
уже давно The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package, там возможностей намного больше.
На это преувеличение/заблуждение, навеянное любящей гиперболизировать документацией, ведутся те, кто с Oracle-ом относительно недавно.
4 ноя 16, 18:54    [19859165]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Elic
dmdmdm
уже давно The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package, там возможностей намного больше.
На это преувеличение/заблуждение, навеянное любящей гиперболизировать документацией, ведутся те, кто с Oracle-ом относительно недавно.
А какие преимущества DBMS_JOB перед DBMS_SCHEDULER?
4 ноя 16, 19:00    [19859185]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Moss
Member

Откуда:
Сообщений: 182
Elic,

Спасибо, почитаю!

Для начала попробую в понедельник так:
CREATE OR REPLACE FUNCTION my_interval_for_job 
    RETURN DATE IS
  myintervar DATE;
BEGIN
  SELECT CASE
           WHEN TO_CHAR(SYSDATE, 'HH24:MI') BETWEEN '15:00' AND '18:00' 
             THEN
            SYSDATE + 1 / (24 * 60) * 10
         END
    INTO myintervar
    FROM dual;
  RETURN myintervar;
END;
/

DECLARE 
interval_var VARCHAR2(2000) := 'my_interval_for_job';
BEGIN 
  sys.dbms_job.submit(job => 123123,
                      what => 'my_package.my_procedure;',
                      next_date => to_date('05-11-2016 15:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'interval_var');
  COMMIT;
END;
4 ноя 16, 19:10    [19859207]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
проходил мимо...
Member

Откуда: от верблюда
Сообщений: 1178
dbms_photoshop
А какие преимущества DBMS_JOB перед DBMS_SCHEDULER?

Первый существенно проще и предсказуемей. Чего только шедулеровские таймзоны стоят...
4 ноя 16, 19:31    [19859250]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
проходил мимо...
dbms_photoshop
А какие преимущества DBMS_JOB перед DBMS_SCHEDULER?

Первый существенно проще и предсказуемей. Чего только шедулеровские таймзоны стоят...
Oracle 8i тоже "существенно проще и предсказуемей" чем Oracle 12c.
Чего только adaptive cursor sharing, cardinality feedback не говоря уже про adaptive execution plans стоят...
4 ноя 16, 19:35    [19859264]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
dbms_photoshop
А какие преимущества DBMS_JOB перед DBMS_SCHEDULER?
1) Транзакционность.
2) Надстройка над dbms_job, функционально похожая на достаточное подмножество не существовавшего в своё время dbms_sheduler, прекрасно работает ещё с 7.3.
4 ноя 16, 19:59    [19859306]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
проходил мимо...
Member

Откуда: от верблюда
Сообщений: 1178
dbms_photoshop
Oracle 8i тоже "существенно проще и предсказуемей" чем Oracle 12c.
Возможно, вас эти преимущества не интересуют, но это не повод отрицать их наличие.
Или я вас неправильно понял?
4 ноя 16, 20:20    [19859358]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Elic
dbms_photoshop
А какие преимущества DBMS_JOB перед DBMS_SCHEDULER?
1) Транзакционность.
2) Надстройка над dbms_job, функционально похожая на достаточное подмножество не существовавшего в своё время dbms_sheduler, прекрасно работает ещё с 7.3.
1) Если про неявный коммит при dbms_scheduler.create_job, то автономка спасет ситуацию.
А во-вторых, крайне затруднительно придумать разумную ситуацию с необходимостью транзакционного создания заданий.
Если же речь про коммит при выполнении, то еще более странно зачем что-то выполнять в порожденной сессии не фиксируя результат. В конце-концов, вставка rollback, опять же, должна спасти.
2) Я помню твои изобретения как альтернатива dbms_parallel_execute, не сомневаюсь и приблизительный аналог scheduler можно сделать, но подобная привязанность обоснована для существующих систем, когда "работает и не трогай" а не для новых.

dbms_scheduler появился 11 лет назад... хорошо хоть 10 лет назад, в 2006-м, меньше было тех, кто держался за функционал 1995 года. :)

З.Ы. Справедливости ради стоит отметить, что иногда на сайте Оракла можно встретить крайне идиотские рекомендации.
http://www.oracle.com/technetwork/articles/sql/11g-xe-quicktour-498681.html
Recursive subquery factoring is one of Oracle’s new features for increasing compliance with ANSI SQL standard. The WITH clause, starting with 11g, can now take recursive form, meaning that it can refer to itself from inside the WITH block. Naturally, we are not saying goodbye to CONNECT BY just yet, but from now on the new WITH clause is the preferred method of working with hierarchical data.
4 ноя 16, 22:28    [19859635]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
проходил мимо...
dbms_photoshop
Oracle 8i тоже "существенно проще и предсказуемей" чем Oracle 12c.
Возможно, вас эти преимущества не интересуют, но это не повод отрицать их наличие.
Или я вас неправильно понял?
Мне казалось что аналогия достаточно понятна.
Если тебе что-то кажется сложным или не умеешь его готовить, то это не может считаться разумным обоснованием для других.
4 ноя 16, 22:30    [19859641]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
dbms_photoshop
1) Если про неявный коммит при dbms_scheduler.create_job, то автономка спасет ситуацию.
Автономка - это атранзакционность.
Транзакционность в том, что создастся (изменится) или же нет задание зависит от того, как завершится транзакция.
dbms_photoshop
2) Я помню твои изобретения как альтернатива dbms_parallel_execute
1) Это, как и в большинстве случаев, всего лишь форумная эквилибристика.
2) Это не могло быть альтернативой, потому что в марте 2007-го такого пакета просто не было.
+
dbmspexe.sql
Rem    achoi       09/25/07 - Created

3) Ты слегка преувеличиваешь его возможности, а точнее (не)предназначение исполнять PL/SQL
dbms_photoshop
не сомневаюсь и приблизительный аналог scheduler можно сделать, но подобная привязанность обоснована для существующих систем, когда "работает и не трогай" а не для новых.
Чувствуется подход DBA - ломать не строить. Что проще сопровождать: одну реализацию планировщика как интегрированной части информационной системы или две (причём вторую ещё нужно сделать)?
dbms_photoshop
dbms_scheduler появился 11 лет назад...
Ты чересчур оптимистично считаешь время. Новые фичи годны только для форумной (тестовой) эквилибристики в течении нескольких лет, пока версия не устаканится.
4 ноя 16, 23:25    [19859826]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
евент жоб
Guest
Elic
Транзакционность в том, что создастся (изменится) или же нет задание зависит от того, как завершится транзакция.
Джоб можно создать заранее, а запускать по итогам транзакции. Это согласуется с нетранзакционностью ddl.
5 ноя 16, 09:59    [19860183]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
евент жоб
Elic
Транзакционность в том, что создастся (изменится) или же нет задание зависит от того, как завершится транзакция.
Джоб можно создать заранее, а запускать по итогам транзакции. Это согласуется с нетранзакционностью ddl.
Задания могут быть одноразовыми. И разными (с разными параметрами).
5 ноя 16, 10:16    [19860197]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
veep
Member

Откуда:
Сообщений: 275
dbms_photoshop
dbms_scheduler появился 11 лет назад...
Ты чересчур оптимистично считаешь время. Новые фичи годны только для форумной (тестовой) эквилибристики в течении нескольких лет, пока версия не устаканится.[/quot]

Новые фичи вполне работают почти сразу при наличии нормально проплаченной поддержки и умение взаимодействовать с support, а также когда они внедряются согласно Change Management процессу а не по методу ".... и в продакшн"
Ну внедрение новых фич как правило откалыдывается на год после появления, это связанно с планированием.
5 ноя 16, 15:40    [19860556]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
veep,

Ха! Больше года может улететь только с момента принятия решения, что пора бы и обновляться на новую версию, до окончания тестирования оной. А само решение может родиться уже при приближении срока окончания поддержки)
5 ноя 16, 15:48    [19860568]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
veep
Member

Откуда:
Сообщений: 275
xtender
veep,

Ха! Больше года может улететь только с момента принятия решения, что пора бы и обновляться на новую версию, до окончания тестирования оной. А само решение может родиться уже при приближении срока окончания поддержки)


Ну в реалиях так обычно и бывает :) Но подход не правильный по сути.
Как только появляется новая версия Оракл забивает на нормальный супорт старой. Вроде как формально поддерживиет, но нормальных патчей уже не выходит (выходит что то типа bug fix of bug fix). В итоге проблемы обнаруженные проблемы в 11g скорее всего в 11g так и останутся. Мигрировать на новую версию - значит получить шанс получить более менее качественный супорт.
5 ноя 16, 15:55    [19860577]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Elic
Member

Откуда:
Сообщений: 29980
veep
Новые фичи вполне работают почти сразу при наличии нормально проплаченной поддержки и умение взаимодействовать с support
Новые фичи для разработчика слишком ничтожны, чтобы тестируя их ещё и платить за поддержку. Это садомазосекс.
5 ноя 16, 20:30    [19861109]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
veep
Member

Откуда:
Сообщений: 275
Elic
veep
Новые фичи вполне работают почти сразу при наличии нормально проплаченной поддержки и умение взаимодействовать с support
Новые фичи для разработчика слишком ничтожны, чтобы тестируя их ещё и платить за поддержку. Это садомазосекс.


Ну вообще поддержка как правило уже оплачена. Не вижу смысла в чистом лицензировании без поддержки.

А новые фичи вовсе не ничтожны.
dbms_schedule на вскидку может запускать не только PL/SQL модули, но и внешние executables. Кроме того появилось понятие SCHEDULE WINDOWS. В итоге имеем очень гибкие и маштабируемые джобы. Для Оракла это фактически революция. DBMS_JOB был ад для разработчика ибо был мало прогибаем.
6 ноя 16, 09:15    [19862147]     Ответить | Цитировать Сообщить модератору
 Re: dbms_job и interval  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Ад был не для всех
А как сказал Elic запуск задания по завершению (или не запуск при откате) транзакции было прогнозируемым и предсказуемым поведением
7 ноя 16, 07:48    [19863986]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить