AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

DBMS_SCHEDULER - 2025 완전 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • 대상자: Oracle 데이터베이스 개발자, DBA, ETL 엔지니어
  • 난이도: 중급~고급 (PL/SQL 및 스케줄링 개념 이해 필요)

핵심 요약

  • DBMS_SCHEDULERDBMS_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_PROGRAMCREATE_SCHEDULE을 통해 재사용 가능한 로직/시간 설정을 설계하고, SET_ATTRIBUTE동적 조정 가능
  • 실무 적용 시: LOGGING_FULL 설정으로 세부 로그 추적을 통해 문제 발생 시 빠른 대응 가능