powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рестарт недоработанного джоба
1 сообщений из 1, страница 1 из 1
Рестарт недоработанного джоба
    #39986390
Azket
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Столкнулся с такой проблемой:
есть постоянный джоб, который проходит по таблице с задачами и для каждой из них создается отдельный одноразовый джоб. В рамках этого джоба:
1) устанавливается флаг работы над задачей
2) выполняется задача
3) снимается флаг работы над задачей.
Но если во время работы такого джоба произошла какая-нибудь беда (срубили сессию, например), то п.(3) не будет пройден.

Вот так попытался потестировать атрибут restartable:
Подготовка:
Код: plsql
1.
2.
create or replace procedure PROC_VV(p_num number) is begin insert into t_vv values ('START', sysdate); commit; dbms_lock.sleep(p_num); insert into t_vv values ('STop', sysdate); commit; end;
create table T_VV (f VARCHAR2(255),d DATE)


Выполнение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
   sys.dbms_scheduler.create_job(job_name            => 'J_VV',
                                 job_type            => 'STORED_PROCEDURE',
                                 job_action          => 'PROC_VV',
                                 number_of_arguments => 1,
                                 auto_drop           => TRUE,
                                 enabled             => FALSE);
   sys.dbms_scheduler.set_job_argument_value(job_name => 'J_VV', argument_position => 1, argument_value => '60');
   sys.dbms_application_info.set_client_info('J_VV');
   sys.dbms_scheduler.set_attribute(NAME => 'J_VV', attribute => 'RESTARTABLE', VALUE => TRUE);
   sys.dbms_scheduler.enable(NAME => 'J_VV');
END;


Проверка:
Код: plsql
1.
2.
3.
4.
select * from dba_scheduler_jobs j where j.job_name = 'J_VV';
select * from dba_scheduler_running_jobs  t where upper(t.job_name) in  ('J_VV');
select * from dba_scheduler_job_run_details t where t.job_name = 'J_VV' order by t.LOG_ID desc;
select * from dba_scheduler_job_log t where t.job_name = 'J_VV' order by t.LOG_ID desc;



Нахожу и убиваю сессию:
Код: plsql
1.
2.
select v.SID||','||v.SERIAL#, v.* from v$session v where v.ACTION like 'J_VV'; 
alter system kill session '962,35747' immediate;



После этого появляется запись:
Код: plsql
1.
2.
3.
select * from dba_scheduler_job_run_details t where t.job_name = 'J_VV' order by t.LOG_ID desc;

REASON="Job slave process was terminated"


но джоб не рестартуется, хотя вот тут написано, что вроде должен:
авторJob recovery proceeds as follows:

The Scheduler adds an entry to the job log for the instance of the job that was running when the failure occurred. In the log entry, the OPERATION is 'RUN', the STATUS is 'STOPPED', and ADDITIONAL_INFO contains one of the following:

REASON="Job slave process was terminated"

REASON="ORA-01014: ORACLE shutdown in progress"

If restartable is set to TRUE for the job, the job is restarted.

If restartable is set to FALSE for the job:

If the job is a run-once job and auto_drop is set to TRUE, the job run is done and the job is dropped.

If the job is a run-once job and auto_drop is set to FALSE, the job is disabled and the job state is set to 'STOPPED'.

If the job is a repeating job, the Scheduler schedules the next job run and the job state is set to 'SCHEDULED'.

Помогите понять, почему джоб не рестартуется

Код: plsql
1.
2.
3.
4.
5.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE	11.2.0.4.0	Production"
TNS for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рестарт недоработанного джоба
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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