오라클 Job 스케줄링 및 모니터링

 Oracle에서 job이 실패하더라도 매일 특정 시간(예: 오전 6시)에 실행되도록 설정하려면  DBMS_SCHEDULER 패키지를 사용하여 job을 작성할 수 있습니다. job의 실행 간격을 조정하려면 repeat_interval에 적절한 cron 표현식을 설정하면 됩니다.


아래는 job을 설정하는 예제입니다.

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'my_daily_job',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN my_procedure; END;',
    start_date      => TO_TIMESTAMP_TZ('2025-01-03 06:00:00', 'YYYY-MM-DD HH24:MI:SS TZR'),
    repeat_interval => 'FREQ=DAILY; BYHOUR=6; BYMINUTE=0; BYSECOND=0',
    enabled         => TRUE,
    auto_drop       => FALSE,
    comments        => 'Daily job that runs every day at 6:00 AM');
END;
/

2. 주요 설정 설명

  • job_name: 작업의 이름을 지정합니다.
  • job_action: 실행할 PLSQL 블록 또는 저장 프로시저를 정의합니다.
  • start_date: 첫 실행 시작 시간. 위 예제는 2025년 1월 3일 오전 6시로 설정됩니다.
  • repeat_interval: 크론 표현식 스타일의 반복 주기입니다.
    • FREQ=DAILY는 매일 실행을 의미합니다.
    • BYHOUR=6는 오전 6시에 실행을 지정합니다.
  • enabled: 작업을 즉시 활성화합니다.

3. Job 수정

기존 job의 repeat_interval을 수정하려면 아래와 같이 설정할 수 있습니다.

BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE (
    name      => 'my_daily_job',
    attribute => 'repeat_interval',
    value     => 'FREQ=DAILY; BYHOUR=6; BYMINUTE=0; BYSECOND=0');
END;
/


4. 실패 후 재실행 정책 설정

Job이 실패했을 때 자동으로 다음 실행 시도까지 대기하도록 설정하려면 
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE 또는 에러 핸들링 절차를 추가할 수 있습니다. 하지만 위 repeat_interval로 설정하면 실패 여부와 관계없이 매일 오전 6시에 실행됩니다.
 


다음 이전