ORACLE에서 DB JOB 으로 관리되던 프로시져의 실행시간이 이상해져서
JOB 조회/등록/변경/삭제 등의 방법을 알아봄
-- JOB 조회
SELECT * FROM USER_JOBS;
-- JOB 등록
EXECUTE DBMS_JOB.SUBMIT(JOB_NO, JOB_내용, JOB_실행시간, JOB_실행간격, FALSE);
DBMS_JOB.SUBMIT(
job OUT BINARY_INTEGER,
what IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE,
interval IN VARCHAR2 DEFAULT 'NULL',
no_parse IN BOOLEAN DEFAULT FALSE,
instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
force IN BOOLEAN DEFAULT FALSE
);
-- JOB 정지
EXECUTE DBMS_JOB.BROKEN(JOB_NO, TRUE);
-- JOB 살리기
EXECUTE DBMS_JOB.BROKEN(JOB_NO, FALSE);
-- JOB 삭제
EXECUTE DBMS_JOB.REMOVE(JOB_NO);
-- JOB 변경
EXECUTE DBMS_JOB.NEXT_DATE(4, TRUNC(SYSDATE)+1+1/24/60);
-- JOB 실행
EXECUTE DBMS_JOB.RUN(JOB_NO);
-- EX
EXECUTE DBMS_JOB.SUBMIT( JOB_NO, 'USER_NAME.PROCEDURE_NAME;', TRUNC(SYSDATE)+23/24, 'TRUNC(SYSDATE)+1+23/24', FALSE);
-- 매시간 정각+3분
SELECT TO_CHAR( TRUNC(SYSDATE, 'HH24') +1/24 +3/24/60 , 'YYYYMMDDHH24MISS') FROM DUAL;
-- 1분단위
SELECT TO_CHAR( TRUNC(SYSDATE, 'MI')+1/24/60 , 'YYYYMMDDHH24MISS') FROM DUAL;
최종적으로 INTERVAL 시간을 변경하여 매일 새벽 두시에 실행시키고자 함
INTERVAL 값을 적을 때 ' (Single quotation marks) 를 쓰지 않는 에러남
DECLARE
BEGIN
DBMS_JOB.INTERVAL(45, 'TRUNC(SYSDATE)+1+2/24'); -- 매일 새벽 2시 실행
COMMIT;
END;
'업무 > DB' 카테고리의 다른 글
[ORACLE] DBMS_OUTPUT.PUT_LINE 출력이 안보이는 경우 (0) | 2021.11.05 |
---|---|
[ORACLE] 특정 이름을 컬럼으로 가지는 테이블 찾기 (0) | 2021.10.21 |
[ORACLE] 전체 테이블, 컬럼, 코멘트 조회 / 소스 전체 내용 검색 (0) | 2021.10.08 |
[ORACLE] SMTP 메일 보내기 - 메일 하나에 다건(리스트) 보내기 (0) | 2021.09.13 |
[ORACLE] ORA-30678: 열린 접속이 너무 많음 (0) | 2021.04.28 |