300x250
오라클 저장된 프로시저로 DBMS_SCHEDULER 생성 하여 실행하는 방법
-- 프로그램 등록
----------------
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name => 'SET_PROC_PRG', -- 사용할 프로그램명을 입력한다.
program_action => '저장되어있는 프로시저명', -- 생성되어있는 프로시저명을 입력한다.
program_type => 'STORED_PROCEDURE', -- 타입은 저장된 프로시저로 입력
comments => 'Update Status', -- 설명 입력
enabled => TRUE);
END;
/
-- 스케쥴러 등록
------------------
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE(
schedule_name => 'SCHEDULE_15_MIN',
start_date => to_date('20230630000000','yyyymmddhh24miss'),
end_date => null,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=15', -- 15분간격
comments => 'Every 15 min'); -- 설명
END;
/
/*
-- 반복 주기
repeat_interval => 'FREQ=HOURLY; INTERVAL=1' -- 1시간 간격으로 수행
repeat_interval => 'FREQ=MINUTELY; INTERVAL=30' -- 30분 간격으로 수행
repeat_interval => 'FREQ=SECONDLY; INTERVAL=5' -- 5초 간격으로 수행
repeat_interval => 'FREQ=WEEKLY; INTERVAL=2' -- 2주 간격으로 수행
repeat_interval => 'FREQ=MONTHLY;' -- 매달 수행
repeat_interval => 'FREQ=YEARLY;' -- 매년 수행
*/
-- JOB 등록
-------------------
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name =>'SET_STATUS_JOB', -- 사용할 JOB 이름 입력
program_name =>'SET_PROC_PRG', -- 위에서 등록한 프로그램명 입력
schedule_name =>'SCHEDULE_15_MIN', -- 위에서 등록한 스케쥴러 이름 입력
enabled =>TRUE);
END;
/
-- 아래와 같이 1개의 스케쥴러에 여러개의 JOB을 등록 할 수 있다.
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name =>'SET_STATUS_JOB2',
program_name =>'SET_PROC_PRG2',
schedule_name =>'SCHEDULE_15_MIN', -- 동일한 스케쥴에 잡 생성 가능.
enabled =>TRUE);
END;
/
320x100
오라클 스케쥴러 상태 확인 및 로그조회
--스케줄러 조회
SELECT
JOB_NAME, REPEAT_INTERVAL
, TO_CHAR(LAST_START_DATE, 'YYYY-MM-DD HH24:MI:SS')
, TO_CHAR(NEXT_RUN_DATE, 'YYYY-MM-DD HH24:MI:SS')
FROM USER_SCHEDULER_JOBS
--WHERE LOGGING_LEVEL = 'RUNS'
ORDER BY REPEAT_INTERVAL;
--스케줄러 로그 조회
SELECT *
FROM USER_SCHEDULER_JOB_LOG
WHERE JOB_NAME='SET_STATUS_JOB';
-- 옵션
--스케줄러 사용
EXEC SYS.DBMS_SCHEDULER.ENABLE
(NAME => 'SET_STATUS_JOB');
--오류 발생 시 재시작 여부 기본값: FALSE
EXEC SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( NAME => 'SET_STATUS_JOB'
,ATTRIBUTE => 'RESTARTABLE'
,VALUE => FALSE);
--우선순위 1~5 1이 가장 먼저, 기본: 3
EXEC SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( NAME => 'SET_STATUS_JOB'
,ATTRIBUTE => 'JOB_PRIORITY'
,VALUE => 3);
--완료 및 미사용 시 자동 삭제여부
EXEC SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( NAME => 'SET_STATUS_JOB'
,ATTRIBUTE => 'AUTO_DROP'
,VALUE => FALSE);
-- 로그
-- DBMS_SCHEDULER.LOGGING_OFF : 로그 x
-- DBMS_SCHEDULER.LOGGING_FAILED_RUNS : 실패 건만 로그 기록
-- DBMS_SCHEDULER.LOGGING_RUNS : 모든 실행에 대한 로그 기록(기본)
-- DBMS_SCHEDULER.LOGGING_FULL : 모든 실행 및 작업에서 실행되는 모든 작업도 기록
-- (생성, 활성화, 변경, 중지 등)
EXEC SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( NAME => 'SET_STATUS_JOB'
,ATTRIBUTE => 'LOGGING_LEVEL'
,VALUE => SYS.DBMS_SCHEDULER.LOGGING_RUNS);
반응형
스케쥴러 실행/삭제
-- 실행/삭제
--실행
EXEC DBMS_SCHEDULER.RUN_JOB
('SET_STATUS_JOB');
--삭제
BEGIN
DBMS_SCHEDULER.DROP_JOB
(
JOB_NAME =>'SET_STATUS_JOB',
FORCE => FALSE
);
END;
728x90
반응형
'기타 > 기타' 카테고리의 다른 글
클라우드 PaaS, IaaS, SaaS, CaaS 비교 (2) | 2023.12.06 |
---|---|
오라클 (Oracle) 비밀번호 변경 ALTER USER IDENTIFIED BY (0) | 2023.09.05 |
[linux] 리눅스 tar tar.gz 압축 / 해제 (0) | 2023.08.25 |
Oracle 데이터베이스 오류 코드 ORA-38824 CREATE OR REPLACE 명령이 기존 객체의 EDITIONABLE 속성을 변경할 수 없습니다. (3) | 2023.03.10 |