Разница между dbms_job и прагмой автономной транзакции - PullRequest
0 голосов
/ 11 декабря 2018

в чем разница между dbms_job и прагмой автономной транзакции

1 Ответ

0 голосов
/ 11 декабря 2018

Кроме того, что они написаны по-разному?Они похожи на яблоки и бананы.

DBMS_JOB создает расписание и управляет заданиями в очереди заданий.Он используется для запуска определенных процедур в запланированное время.Например, каждый день в 02:00, 08:00 и 16:00;или каждую субботу в 12:00 и т. д. Если вы работаете в Windows, это похоже на диспетчер задач.Или, в Unix, он называется Cron .

У него есть младший брат с именем DBMS_SCHEDULER, который предоставляет гораздо больше возможностей.Хотя для простых работ я все еще использую DBMS_JOB.Более подробная информация здесь: https://docs.oracle.com/database/121/ARPLS/d_job.htm#ARPLS019


Pragma означает, что оператор является прагмой (директива компилятора).Прагмы обрабатываются во время компиляции, а не во время выполнения.Они передают информацию компилятору.

Прагма AUTONOMOUS_TRANSACTION изменяет способ работы подпрограммы в транзакции.Подпрограмма, помеченная этой прагмой, может выполнять операции SQL и фиксировать или откатывать эти операции без фиксации или отката данных в основной транзакции.

Обычно используется для записи определенной информации из ваших процедур, не затрагивая основную процедуру (поскольку прагма позволяет процедуре logging зафиксировать свои вставки в таблицу журнала, не затрагивая основную процедуру -он может даже потерпеть неудачу (и неявный откат), но информация вашего журнала останется нетронутой и доступной для просмотра.)

Люди используют ее неправильно при решении проблемы с изменяющимися таблицами;Да, эта прагма «исправляет» проблему, но обычно НЕПРАВИЛЬНЫЙ способ решения этой проблемы.

Подробнее об автономных транзакциях здесь: https://docs.oracle.com/database/121/LNPLS/static.htm#LNPLS00609

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...