300x250
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시에 실행됩니다.
관련 블로그
Job Number 조회
Oracle에서 현재 실행 중이거나 과거에 실행된 Job Number를 조회하려면 사용 중인 Scheduler 유형에 따라 SQL 쿼리가 달라집니다.1. DBMS_SCHEDULER 사용 시Oracle 10g 이상에서 사용하는 DBMS_SCHEDULER 기반의 Job
make2t.tistory.com
300x250
'IT > Oracle' 카테고리의 다른 글
오라클 - 스마트 스캔 (0) | 2025.02.24 |
---|---|
오라클 19c - PDB(Pluggable Database, 플러그형 데이터베이스) (1) | 2025.02.23 |
오라클 힌트 조회 (2) | 2025.02.23 |
PL/SQL Function 기본 구조 (0) | 2025.02.23 |
오라클 파티션 인덱스 상태 조회 쿼리 (0) | 2025.02.23 |