Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_SCHEDULER / 6 сообщений из 6, страница 1 из 1
28.03.2017, 09:54
    #39428201
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBMS_SCHEDULER
Код: 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
28.03.2017, 10:56
    #39428239
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBMS_SCHEDULER
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
28.03.2017, 12:05
    #39428290
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBMS_SCHEDULER
Хм... Нашел вот что:
Пример внутреннего задания в виде неименованного блока 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
28.03.2017, 12:40
    #39428334
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBMS_SCHEDULER
Владимир САХм... Нашел вот что:
Пример внутреннего задания в виде неименованного блока 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
28.03.2017, 12:40
    #39428337
DBMS_SCHEDULER
Viewer,

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


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