DBMS_SCHEDULER 를 활용하면 서버에서 cron job 을 쓰지 않고, 정기적인 작업을 실행할수 있다.
이것의 장점은 ..
- 굳이 서버에 접속하지 않고도 오렌지 같은 툴로 DB에만 접속해서 결과 확인이 가능.
- Active-stand by 구성된 경우 failover 되어 master 가 변경이 되는것에 신경 쓸 필요가 없다.
관리의 포인트가 DB 로 넘어온다는 것이 부담스럽긴 하지만 잘 애플리케이션 측면에서 활용도가 높으니
알아두는 것이 좋다.
1. 스케쥴 등록
BEGIN DBMS_SCHEDULER.CREATE_JOB(
JOB_NAME => 'TEST.TEST_JOB', --잡이름
JOB_TYPE => 'PLSQL_BLOCK', --PL/SQL로 만들어진 오브젝트 실행시 PLSQL_BLOCK를 지정
JOB_ACTION => 'BEGIN TEST.PC_JOBTEST; END;', --실행 할 오브젝트명 등록
START_DATE => TO_DATE('2022/03/03 10:10:00','YYYY/MM/DD HH24:MI:SS'), --실행을 시작 할 일시 지정
REPEAT_INTERVAL => 'FREQ=MINUTELY; INTERVAL=10', -- 반복 실행 주기 설정
COMMENTS => '여기에 주석 남기기!!'
);
DBMS_SCHEDULER.SET_ATTRIBUTE('TEST.JB_TEST_JOB','INSTANCE_ID',2); --수행할 노드지정(RAC환경에서)
** 인터벌 example
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=DAILY; INTERVAL=1; BYHOUR=09;BYMINUTE=0;' <- 매일 09시
REPEAT_INTERVAL => 'FREQ=DAILY; INTERVAL=1; BYHOUR=09,12,15,18;' <- 매일 특정시간
REPEAT_INTERVAL => 'FREQ=WEEKLY; INTERVAL=2; BYDAY= MON;' <- 격주차 월요일
REPEAT_INTERVAL => 'FREQ=MONTHLY; BYMONTHDAY=1 INTERVAL=1' <- 매달 1일
2. 스케쥴
EXEC DBMS_SCHEDULER.DISABLE ('스케줄명') ; -- 비활성화
EXEC DBMS_SCHEDULER.ENABLE ('스케줄명') ; -- 활성화
EXEC DBMS_SCHEDULER.RUN_JOB('스케줄명') ; -- 실행
EXEC DBMS_SCHEDULER.DROP_JOB('스케줄명') ; -- 삭제
JOB 을 등록했으면 ENABLE 까지 해주어야 JOB 이 스케쥴링대로 돌아간다.
3. 등록현황 조회
SELECT P.OWNER,
P.JOB_NAME,
P.STATE,
P.ENABLED,
P.COMMENTS,
CAST(P.NEXT_RUN_DATE AS DATE) NEXT_RUN_DATE,
P.SCHEDULE_TYPE,
P.REPEAT_INTERVAL,
P.JOB_ACTION
FROM DBA_SCHEDULER_JOBS P
WHERE P.OWNER = 'AAA'
4. 실행로그 확인
SELECT LOG_ID,LOG_DATE,OWNER,JOB_NAME,JOB_SUBNAME,JOB_CLASS,OPERATION,STATUS
FROM DBA_SCHEDULER_JOB_LOG WHERE JOB_NAME = '스케줄명 '
ORDER BY LOG_DATE DESC;
5. 실행 상세로그 확인
SELECT * FROM DBA_SCHEDULER_JOB_RUN_DETAILS WHERE JOB_NAME = '스케줄명'
ORDER BY LOG_DATE DESC;
'생계 > Oracle' 카테고리의 다른 글
[oracle] 아카이브모드 변경 no arch -> arch -> no arch (0) | 2022.08.14 |
---|---|
통계정보 dbms_stats (0) | 2022.07.21 |
[ASM 환경] 테이블스페이스 생성, 추가, RESIZE (0) | 2022.01.26 |
sql loader 에러시 실행로그로 스크립트 생성 (0) | 2021.10.31 |
DBMS_XMLGEN.GETXMLTYPE 테이블정의서 (0) | 2021.10.23 |