DBMS_SCHEDULER - 2025 완전 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: Oracle 데이터베이스 개발자, DBA, ETL 엔지니어
- 난이도: 중급~고급 (PL/SQL 및 스케줄링 개념 이해 필요)
핵심 요약
- DBMS_SCHEDULER는 DBMS_JOB을 대체한 Oracle의 최신 스케줄링 도구로, PL/SQL 블록, 외부 스크립트, 스토어드 프로시저 등을 자동화 가능
- 핵심 프로시저:
CREATE_JOB
: 스케줄링 작업 정의 (예:FREQ=DAILY;BYHOUR=2
주기 설정)ENABLE/DISABLE
: 작업 활성화/비활성화 관리RUN_JOB
: 수동 실행 가능 (테스트용)- 모니터링:
DBA_SCHEDULER_JOBS
뷰를 통해 작업 상태, 에러 로그 추적
섹션별 세부 요약
1. 🔨 CREATE_JOB
- 목적: 새로운 작업 정의 (PL/SQL 블록, 외부 프로그램 등)
- 예시:
```plsql
BEGIN DBMS_SCHEDULER.create_job (
job_name => 'job_data_archival',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN archive_old_data(); END;',
repeat_interval => 'FREQ=DAILY;BYHOUR=2'
);
END;
```
- 설명:
enabled => FALSE
로 생성 후 검증 가능
2. ▶️ RUN_JOB
- 목적: 스케줄링 시간 외 수동 실행
- 예시:
```plsql
BEGIN DBMS_SCHEDULER.run_job('job_data_archival');
END;
```
- 사용 시기: 테스트 또는 즉시 실행이 필요한 경우
3. 🧱 CREATE_JOB_CLASS
- 목적: 작업 그룹화 및 리소스 우선순위 관리
- 예시:
```plsql
BEGIN DBMS_SCHEDULER.create_job_class(
job_class_name => 'ARCHIVAL_JOBS',
logging_level => DBMS_SCHEDULER.LOGGING_FULL
);
```
- 효과: 모듈화된 작업 관리
4. 📊 Monitoring & Debugging
- 모니터링 방법:
DBA_SCHEDULER_JOBS
: 작업 메타데이터 (ex.last_start_date
,next_run_date
) 확인DBA_SCHEDULER_JOB_RUN_DETAILS
: 실행 내역 및 에러 분석- 기능: 실시간 문제 진단 가능
5. 🧾 실제 사례
- ETL 자동화: 외부 시스템과의 데이터 수집/정제 자동화
- 데이터 아카이빙: 오래된 레코드 주기적으로 삭제 및 저장
- 하이브리드 사용: Linux Cron과 연동하여 shell 스크립트 내 PL/SQL 호출
결론
- DBMS_SCHEDULER를 활용하면 ETL 파이프라인, 시스템 점검, 데이터 관리 작업을 자동화하여 운영 효율성 향상 가능
- 핵심 팁:
CREATE_PROGRAM
과CREATE_SCHEDULE
을 통해 재사용 가능한 로직/시간 설정을 설계하고,SET_ATTRIBUTE
로 동적 조정 가능 - 실무 적용 시:
LOGGING_FULL
설정으로 세부 로그 추적을 통해 문제 발생 시 빠른 대응 가능