스케줄러 job 실행 이력 및 실패 모니터링
Oracle스케줄러명령어
-- 1) Recent runs: duration, CPU, error code and message
SELECT owner, job_name, status, error#,
TO_CHAR(actual_start_date,'YYYY-MM-DD HH24:MI:SS') AS started,
run_duration, cpu_used,
SUBSTR(additional_info, 1, 200) AS info
FROM dba_scheduler_job_run_details
WHERE owner = 'CUSTOMER_APP'
ORDER BY actual_start_date DESC
FETCH FIRST 20 ROWS ONLY;
-- 2) Failures in the last 24 hours (whole DB):
SELECT owner, job_name, error#, actual_start_date, SUBSTR(errors, 1, 300) AS errors
FROM dba_scheduler_job_run_details
WHERE status <> 'SUCCEEDED'
AND log_date > SYSTIMESTAMP - INTERVAL '1' DAY
ORDER BY log_date DESC;
-- 3) Currently running:
SELECT owner, job_name, session_id, running_instance, elapsed_time, cpu_used
FROM dba_scheduler_running_jobs;
-- 4) Lifecycle events (ENABLE/DISABLE/RUN/STOP...):
SELECT log_date, owner, job_name, operation, status
FROM dba_scheduler_job_log
WHERE owner = 'CUSTOMER_APP'
ORDER BY log_date DESC
FETCH FIRST 20 ROWS ONLY;
-- Log retention (days): EXEC DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('log_history', '30');하는 일
스케줄러 로그 뷰에서 각 실행의 시작 시각, 소요 시간, CPU 사용량, 상태, 오류 메시지와 실행 중인 job, job 수명 주기 이벤트를 나열한다.
사용 시점
야간 job이 실행되지 않았거나 오래 걸렸을 때, job SLA 추적, 모니터링 시스템(OEM/Zabbix/Prometheus)에 실패 규칙을 정의할 때.
주의
읽기 전용이며 라이선스가 필요 없다. 기본 로그 보존 기간은 30일이며 logging_level이 OFF인 job은 레코드를 남기지 않는다. ERRORS 컬럼은 12c+에 있으며 이전 릴리스에서는 ADDITIONAL_INFO를 확인한다. RAC에서는 RUNNING_INSTANCE가 job을 실행한 노드를 보여 준다.