오라클 스케줄러 사용법 및 예제
오라클 스케줄러란?
오라클 데이터베이스에 내장된 기능으로, 주기적으로 작업을 자동으로 실행시키는데 사용되는 기능입니다. 스케줄러를 사용하면 데이터베이스 관리자는 일일히 작업을 실행시키지 않고도 정기적인 관리 작업을 스케줄링하고, 세부 조건과 실행 타이밍을 설정할 수 있습니다.
스케줄러 사용법
오라클 스케줄러를 사용하기 위해서는 다음 절차를 따르면 됩니다.
- 스케줄러 작업(Job) 생성
- 스케줄 객체(Schedule) 정의
- 작업과 스케줄 객체 매핑
- 작업 실행
스케줄러를 사용하기 위해서는 권한이 필요합니다. DBA 권한이 있는 사용자이거나, CREATE JOB
시스템 권한이 부여된 사용자만이 스케줄 작업을 생성할 수 있습니다.
1. 스케줄러 작업(Job) 생성
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JOB_NAME',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN YOUR_PROCEDURE_NAME; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY; INTERVAL=1',
enabled => TRUE);
END;
/
위 예제는 매일 한 번씩 특정 PL/SQL 블록을 실행하는 스케줄러 작업을 생성하는 예제입니다. JOB_NAME은 작업 이름, job_action은 실행될 PL/SQL 블록입니다. start_date는 작업이 실행되는 시작 일시를 지정하고, repeat_interval은 작업이 반복되는 주기를 정의합니다. enabled는 작업이 활성화되어 있는지 여부를 결정합니다.
2. 스케줄 객체(Schedule) 정의
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE (
schedule_name => 'SCHEDULE_NAME',
repeat_interval => 'FREQ=DAILY; INTERVAL=1',
start_date => SYSTIMESTAMP,
end_date => SYSTIMESTAMP + INTERVAL '1' YEAR);
END;
/
위 예제는 매일 한 번씩 반복되는 스케줄 객체를 생성하는 예제입니다. SCHEDULE_NAME은 스케줄 객체의 이름을 나타내며, repeat_interval은 반복 주기를 정의합니다. start_date는 스케줄이 시작되는 일시를 지정하고, end_date는 스케줄이 종료되는 일시를 지정합니다.
3. 작업과 스케줄 객체 매핑
BEGIN
DBMS_SCHEDULER.ASSIGN_SCHEDULE (
job_name => 'JOB_NAME',
schedule_name => 'SCHEDULE_NAME');
END;
/
위 예제는 작업과 스케줄 객체를 매핑하는 예제입니다. JOB_NAME은 매핑할 작업의 이름이며, SCHEDULE_NAME은 매핑할 스케줄 객체의 이름입니다.
4. 작업 실행
BEGIN
DBMS_SCHEDULER.RUN_JOB('JOB_NAME');
END;
/
위 예제는 작업을 직접 실행하는 예제입니다. JOB_NAME은 실행할 작업의 이름입니다.
스케줄러 예제
실제로 오라클 스케줄러를 사용해보는 예제를 살펴보겠습니다.
매일 오전 9시에 특정 작업 실행
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'DAILY_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN YOUR_PROCEDURE_NAME; END;',
start_date => TRUNC(SYSDATE) + INTERVAL '9' HOUR,
repeat_interval => 'FREQ=DAILY; INTERVAL=1',
enabled => TRUE);
END;
/
위 예제는 매일 오전 9시에 특정 PL/SQL 블록을 실행하는 스케줄러 작업을 생성하는 예제입니다. start_date는 현재 날짜의 9시를 지정하고, repeat_interval은 매일 반복되도록 설정되어 있습니다.
매주 월요일 오전 10시에 특정 작업 실행
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'WEEKLY_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN YOUR_PROCEDURE_NAME; END;',
start_date => TRUNC(NEXT_DAY(SYSDATE, 'MONDAY')) + INTERVAL '10' HOUR,
repeat_interval => 'FREQ=WEEKLY; INTERVAL=1; BYDAY=MON',
enabled => TRUE);
END;
/
위 예제는 매주 월요일 오전 10시에 특정 PL/SQL 블록을 실행하는 스케줄러 작업을 생성하는 예제입니다. start_date는 현재 날짜의 다음 월요일 날짜의 10시를 지정하고, repeat_interval은 매주 월요일마다 반복되도록 설정되어 있으며, BYDAY를 사용하여 월요일에 실행되도록 지정하였습니다.
위 예제를 참고하여 자신의 환경에 맞게 스케줄러를 설정해보세요. 스케줄러를 활용하면 반복적인 작업을 자동화하여 일일히 실행하지 않아도 되어 시간과 노력을 절약할 수 있습니다.
댓글