Стандартные пакеты. DBMS_JOB
Т.к. dbms_job оперирует с датой, то для примера получения нужных дат можно посмотреть oracle: работа с датой
Представления:
dba_jobs, all_jobs, user_jobs
dba_jobs_running, all_jobs_running, user_jobs_running
Enable/disable job
Отвечает ф-ция DBMS_JOB.BROKEN
Syntax
-- disable job
exec dbms_job.broken( jobno, true);
commit;
-- enable job
exec dbms_job.broken( jobno, false);
commit;
Но лучше ещё указать параметр NEXT_DATE, чтобы точно задать время, когда джоб запустится после того как его сделали готовым для выполнения, например:
-- enable job with NEXT_DATE
exec dbms_job.broken( jobno, false, TRUNC(SYSDATE+1)+1/24);
commit;
-- удалить job
exec dbms_job.remove(jobno);
commit;
-- запустить job
exec dbms_job.run(jobno);
-- установить next_date
exec dbms_job.next_date(jobno, TRUNC(SYSDATE+1)+1/24);
Добавить job (примеры):
dbms_job может работать только с job'ами текущего пользователя!
После модификаций job'а нужно делать COMMIT !
После модификаций job'а нужно делать COMMIT !
Т.к. dbms_job оперирует с датой, то для примера получения нужных дат можно посмотреть oracle: работа с датой
Представления:
dba_jobs, all_jobs, user_jobs
dba_jobs_running, all_jobs_running, user_jobs_running
Enable/disable job
Отвечает ф-ция DBMS_JOB.BROKEN
Syntax
DBMS_JOB.BROKEN ( job IN BINARY_INTEGER, broken IN BOOLEAN, next_date IN DATE DEFAULT SYSDATE);
-- disable job
exec dbms_job.broken( jobno, true);
commit;
-- enable job
exec dbms_job.broken( jobno, false);
commit;
Но лучше ещё указать параметр NEXT_DATE, чтобы точно задать время, когда джоб запустится после того как его сделали готовым для выполнения, например:
-- enable job with NEXT_DATE
exec dbms_job.broken( jobno, false, TRUNC(SYSDATE+1)+1/24);
commit;
-- удалить job
exec dbms_job.remove(jobno);
commit;
-- запустить job
exec dbms_job.run(jobno);
-- установить next_date
exec dbms_job.next_date(jobno, TRUNC(SYSDATE+1)+1/24);
Добавить job (примеры):
-- каждый день в 02:00
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'guppi.gather_call_part_stat();'
,interval => 'trunc(sysdate)+1+2/24'
);
COMMIT;
END;
-- каждый день в 03:00
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'guppi.gather_osa_part_stat();'
,interval => 'trunc(sysdate)+1+3/24'
);
COMMIT;
END;
-- каждый день каждый час
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'statspack.snap;'
,interval => 'trunc(SYSDATE+1/24,''HH'')'
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'guppi.gather_call_part_stat();'
,interval => 'trunc(sysdate)+1+2/24'
);
COMMIT;
END;
-- каждый день в 03:00
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'guppi.gather_osa_part_stat();'
,interval => 'trunc(sysdate)+1+3/24'
);
COMMIT;
END;
-- каждый день каждый час
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'statspack.snap;'
,interval => 'trunc(SYSDATE+1/24,''HH'')'
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/