Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: 12.2.0.3 :|  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18210
Нашелся Workaround: указывать INTERVAL при создании задания
К сожалению, не всегда есть возможность поменять код
16 окт 19, 03:35    [21995060]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29399
Вячеслав Любомудров
Что еще хреновей -- не полностью съэмулировали поведение DBMS_JOB Картинка с другого сайта.
Спасибо, Вячеслав. Слава богу мы отвалились от 19с ещё раньше.
Вячеслав Любомудров
Нашелся Workaround: указывать INTERVAL при создании задания
К сожалению, не всегда есть возможность поменять код Картинка с другого сайта.
Это не обход проблемы. Это дюжина гвоздей в крышку гроба dbms_job.
Эти козлы забыли написать в доке, что dbms_job, на самом деле, desupported.


P.S. Саян, похер в похеровницах остался надеяться, "чтобы он стал наиболее стабильным (хотелось бы, конечно, надеяться"?
16 окт 19, 08:21    [21995097]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
-2-
Member

Откуда:
Сообщений: 14992
Elic
Эти козлы забыли написать в доке, что dbms_job, на самом деле, desupported.
Написали might be
Note:
The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package, and support for DBMS_JOB might be removed in future releases of Oracle Database.

Странно, что, несмотря на многолетние рекомендации мигрировать c dbms_job, в синтаксисе матвью так и не появилась кляуза с поддержкой синтаксиса расписания dbms_scheduler.
16 окт 19, 08:57    [21995113]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29399
-2-
Elic
Эти козлы забыли написать в доке, что dbms_job, на самом деле, desupported.
Написали might be
Не передёгивай:
19с
support for DBMS_JOB might be removed in future releases of Oracle Database.
Т.е. в 19c "support" задокументирован.

Note:
has been superseded by
Ладно, сэмулировать next_date (уверен, и broken) они обосрались. Так и в самом DBMS_SCHEDULER подобного механизма нет. Кому они десяток лет ездят по ушам с "superseded"?

+
У меня сделанный ещё в 7.3 функционально достаточный планировщик с гибкими расписаниями прекрасно работает до сих пор. А его возможности тем более не покрываются калечным DBMS_SCHEDULER-ом.
16 окт 19, 09:15    [21995128]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18210
Elic
Ладно, сэмулировать next_date (уверен, и broken) они обосрались. Так и в самом DBMS_SCHEDULER подобного механизма нет.
Ну как нет
Установка NEXT_DATE/BROKEN в DBMS_SCHEDULER (PLSQL_BLOCK) нормально работает
Просто для DBMS_SCHEDULER задокументированное поведение: "If repeat_interval is not specified, the job runs only once at the specified start date"
Т.е. при пустом REPEAT_INTERVAL в принципе не допускается запуск более одного раза, а вычисленное в коде значение NEXT_DATE просто игнорируется, хотя точно так же биндится и, соответственно, доступно
+
DECLARE job BINARY_INTEGER := :job;
next_date TIMESTAMP WITH TIME ZONE := :mydate;
broken BOOLEAN := FALSE;
job_name VARCHAR2(128) := :job_name;
job_subname VARCHAR2(128) := :job_subname;
job_owner VARCHAR2(128) := :job_owner;
job_start TIMESTAMP WITH TIME ZONE := :job_start;
job_scheduled_start TIMESTAMP WITH TIME ZONE := :job_scheduled_start;
window_start TIMESTAMP WITH TIME ZONE := :window_start;
window_end TIMESTAMP WITH TIME ZONE := :window_end;
chain_id VARCHAR2(14) := :chainid;
credential_owner VARCHAR2(128) := :credown;
credential_name VARCHAR2(128) := :crednam;
destination_owner VARCHAR2(128) := :destown;
destination_name VARCHAR2(128) := :destnam;
job_dest_id varchar2(14) := :jdestid;
log_id number := :log_id;
BEGIN dbms_lock.sleep(10); next_date := sysdate+1/24;
:mydate := next_date;
IF broken THEN :b := 1; ELSE :b := 0; END IF;
END;
16 окт 19, 09:31    [21995148]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29399
Вячеслав Любомудров
Elic
Ладно, сэмулировать next_date (уверен, и broken) они обосрались. Так и в самом DBMS_SCHEDULER подобного механизма нет.
Ну как нет
Ну как же, обосраться-таки обосрались?
А по поводу "механизм есть" и "Workaround" - напрашивающийся interval=>'null' не срабатывает. Но любой "нетривиальный" фэйк срабатывает:
, interval=>'null+null'
Т.е. мне как разработчику с next_date можно будет жить.

Может и они досообразят, как доэмулировать. Через пару лет :|
16 окт 19, 09:54    [21995171]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18210
Еще одна задница с DBMS_SCHEDULER в 19c
SQL>  exec dbms_scheduler.create_job('JOB_111', 'PLSQL_BLOCK', 'dbms_session.sleep(10)', 0, systimestamp-interval '1' day, 'sysdate+1', enabled=>false)

PL/SQL procedure successfully completed.

ftcpsi> select last_start_date, next_run_date, run_count from dba_scheduler_jobs where job_name='JOB_111';

LAST_START_DATE      NEXT_RUN_DATE         RUN_COUNT
-------------------- -------------------- ----------
                                                   0

ftcpsi> exec dbms_scheduler.enable('JOB_111')

PL/SQL procedure successfully completed.

ftcpsi> select last_start_date, next_run_date, run_count from dba_scheduler_jobs where job_name='JOB_111';

LAST_START_DATE      NEXT_RUN_DATE         RUN_COUNT
-------------------- -------------------- ----------
                     29-10-2019 17:29:12           0

ftcpsi> exec dbms_scheduler.drop_job('JOB_111')

PL/SQL procedure successfully completed.

ftcpsi> exec dbms_scheduler.create_job('JOB_111', 'PLSQL_BLOCK', 'dbms_session.sleep(10)', 0, systimestamp-interval '1' day, 'sysdate+1', enabled=>true)

PL/SQL procedure successfully completed.

ftcpsi> select last_start_date, next_run_date, run_count from dba_scheduler_jobs where job_name='JOB_111';

LAST_START_DATE      NEXT_RUN_DATE         RUN_COUNT
-------------------- -------------------- ----------
28-10-2019 17:31:09  29-10-2019 17:31:09           1

ftcpsi> exec dbms_scheduler.drop_job('JOB_111')

PL/SQL procedure successfully completed.
28 окт 19, 10:33    [22003963]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29399
Вячеслав Любомудров
Еще одна задница с DBMS_SCHEDULER в 19c Картинка с другого сайта.
Уверен, что раньше было не так?
28 окт 19, 10:41    [22003980]     Ответить | Цитировать Сообщить модератору
 Re: 12.2.0.3 :|  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18210
Да
28 окт 19, 12:22    [22004097]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Oracle Ответить