IT study

[ORACLE] JOB 생성, 활성화, 속성 변경, 중지, 활성화/비활성화 본문

DATABASE/Oracle

[ORACLE] JOB 생성, 활성화, 속성 변경, 중지, 활성화/비활성화

DBnA 2025. 3. 13. 18:01

job 사용과 관련한 내용 정리 

 

begin
  sys.dbms_scheduler.create_job(job_name            => 'testdb."SJ_D-0100_CNT_TLZ"',
                                job_type            => 'STORED_PROCEDURE',
                                job_action          => 'testdb.UP_CNT_TLZ',
                                start_date          => to_date('06-10-2022 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                                repeat_interval     => 'Freq=Daily;Interval=1', --매일 00:00:00 실행 
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                                auto_drop           => false,
                                comments            => '건수 집계');
end;
/


--JOB 활성화

exec dbms_scheduler.enable('SJ_D-0100_CNT_TLZ') ;

-- 등록된 스케줄(잡)확인
select job_name
      , job_type
      , job_action
      , cast(start_date as date) start_date
      , cast(next_run_date as date) next_run_date
      , repeat_interval
      , enabled
      , state
      , run_count
      , failure_count
from user_scheduler_jobs
where job_name = 'SJ_D-0100_CNT_TLZ'
 ;

--해당 job 실행 (오늘은 수기로, 다음날부터 스케줄링)

--exec dbms_scheduler.run_job('SJ_D-0100_CNT_TLZ');


--작업결과 확인
select log_date, actual_start_date, job_name, status
from user_scheduler_job_run_details
where job_name = 'SJ_D-0100_CNT_TLZ' ;

--스케줄러 로그 확인 쿼리
select * from user_scheduler_job_log where job_name='SJ_D-0100_CNT_TLZ' and status='FAILED';

-- job 속성 변경

exec dbms_scheduler.set_attribute(name => 'SJ_D-0100_CNT_TLZ',
attribute => 'repeat_interval',
value => 'Freq=Daily;ByHour=05;ByMinute=00;BySecond=00'); --실행주기 변경

--코멘트추가
begin
 dbms_scheduler.set_attribute(name => 'testdb."SJ_D-0100_CNT_TLZ"',
attribute => 'comments',
value => 'comment~~작성 '); --실행주기 변경
end;


-- 즉시중지 : exec dbms_scheduler.stop_job('SJ_D-0100_CNT_TLZ') ; --실행중인 job
-- 비활성화 : exec dbms_scheduler.disable('SJ_D-0100_CNT_TLZ') ;
-- 다시시작 : exec dbms_scheduler.enable('SJ_D-0100_CNT_TLZ');
-- 삭제    : exec dbms_scheduler.drop_job('SJ_D-0100_CNT_TLZ') ;
-- 실행    : exec dbms_scheduler.run_job('SJ_D-0100_CNT_TLZ') ;

 

job 로그가 success여도 작업이 안된경우있음 -> 이럴땐 job_action 내용확인 , 에러발생시 에러 무시하는 로직 있을지도