powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_SCHEDULER
6 сообщений из 6, страница 1 из 1
DBMS_SCHEDULER
    #39428201
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM V$VERSION

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE	11.2.0.3.0	Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production


Анализирую ранее составленный DBMS_SCHEDULER...
И так. Имеется DBMS_SCHEDULER...
JOB настроен...расписание есть... все работает...
Но за смущало следующее:
Атрибут JOB_ACTION прописан следующим образом:
Код: 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.
BEGIN
  SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
    ( name      => 'JOB_INSERT_TABLES_FOR_INPUT'
     ,attribute => 'JOB_ACTION'
     ,value     => 'BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_1();
END;

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_2();
END;

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_3();
END;

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_4();
END;

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_5();
END; 

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_6();
END;

BEGIN
  PKG_INSERT_TABLES_FOR_INPUT.P_7();
END;');
END;


В каждой процедуре очищается соответствующая таблица (DELETE FROM ...) и заполняется новыми данными (INSERT INTO ... <запрос>).
Причем COMMITа нигде НЕ ПРОПИСАНО явно.
Но т.к. JOB отрабатывает и данные заполняются...
Меня заинтересовал вопрос, А когда COMMIT наступает ?

Ощущение, что COMMIT происходит после окончания работы каждой процедуры P_№.
Т.к. наблюдая за заполнением tablespaces TEMP... Он очищался после выполнения каждой процедуры P_№...
Хотя по моему должно быть по крайне мере в конце работы JOB...
Когда должен происходить COMMIT по теории ?
...
Рейтинг: 0 / 0
DBMS_SCHEDULER
    #39428239
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.morganslibrary.org/reference/pkgs/dbms_scheduler.html Commit Semantics
Name ........................................................... Description
ABSORB_ERRORS Tries to absorb errors and attempts to make the listed job attribute changes and commits all successful changes
STOP_ON_FIRST_ERROR The default: Returns on the first error and the previous attribute changes that were successful are committed to disk
TRANSACTIONAL Returns on the first error and everything that happened before that error is rolled back
...
Рейтинг: 0 / 0
DBMS_SCHEDULER
    #39428290
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Нашел вот что:
Пример внутреннего задания в виде неименованного блока PL/SQL:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN
DBMS_SCHEDULER.CREATE_JOB
( job_name   => 'simple_job'
, jobtype   => 'PLSQL_BLOCK'
, job_action => 'UPDATE emp SET sal = sal +1;'
, enabled   => TRUE
);
END;
/

Обратите внимание:

1. Обрамлять блок словами BEGIN и END не обязательно, так как код пакета DBMS_SCHEDULER это сделает самостоятельно (ради особой программной логики, добавляемой им к тексту пользователя).
2. Задание запускается в этом же сеансе и сопровождается неявной выдачей COMMIT.

Похоже, что неявный COMMIT происходит в конце JOB_ACTION ....
...
Рейтинг: 0 / 0
DBMS_SCHEDULER
    #39428334
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САХм... Нашел вот что:
Пример внутреннего задания в виде неименованного блока PL/SQL:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN
DBMS_SCHEDULER.CREATE_JOB
( job_name   => 'simple_job'
, jobtype   => 'PLSQL_BLOCK'
, job_action => 'UPDATE emp SET sal = sal +1;'
, enabled   => TRUE
);
END;
/

Обратите внимание:

1. Обрамлять блок словами BEGIN и END не обязательно, так как код пакета DBMS_SCHEDULER это сделает самостоятельно (ради особой программной логики, добавляемой им к тексту пользователя).Так же как и в DBMS_JOB
Владимир СА2. Задание запускается в этом же сеансе и сопровождается неявной выдачей COMMIT. Создание комиттит, но задание вызывается в отдельной сессии

Владимир САПохоже, что неявный COMMIT происходит в конце JOB_ACTION ....По окончанию сессии (задания), как и в DBMS_JOB
...
Рейтинг: 0 / 0
DBMS_SCHEDULER
    #39428337
Viewer,

коммит_семантик мимо кассы.
...
Рейтинг: 0 / 0
DBMS_SCHEDULER
    #39428378
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровВладимир САПохоже, что неявный COMMIT происходит в конце JOB_ACTION .... По окончанию сессии (задания), как и в DBMS_JOB Спасибо...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_SCHEDULER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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