1. ORACLE JOB
: 데이터베이스 내에 생성한 프로시저들에 대해 데이터베이스 내의 스케줄러에게 지정한 시간에 자동으로 작업이 진행될수 있도록 하는 기능
- PL/SQL을 통해 JOB 등록
- 주기적으로 수행되어지는 JOB을 JOB QUEUE를 사용하여 스케줄링할 수 있음
- JOB을 스케줄링하기 위해 ORACLE DBMS_JOB 패키지를 이용하여 JOB QUEUE PROCESS가 JOB QUEUE 안의 잡을 수행
2. 문법 -- PL/SQL을 통해 JOB 등록
1) JOB 등록
DECLARE JNO NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
:JNO -- [JOB] OUT BINARY_INTEGER, 실행시킬 JOB 번호
,'INSERT_JOB_TEST01;' -- [WHAT] IN VARCHAR,실제 작업을 수행하는 PL/SQL 또는 SQL 또는 PROCEDURE 등
,SYSDATE -- [NEXT_DATE] IN DATE DEFAULT SYSDATE,JOB이 수행될 다음 일자
,'SYSDATE_1/24/60' -- [INTERVAL] IN VARCHAR DEFAULT 'NULL', JOB이 수행될 다음 시간
,FALSE -- [NO_PARSE] IN BOOLEAN DEFAULT FALSE, PARSE 여부를 지정
);
END;
COMMIT;
2) JOB 삭제
BEGIN
DBMS_JOB.REMOVE('64'); --64는 JOB 번호를 의미
END;
COMMIT;
3) JOB 변경
3.1) WHAT, NEXT_DATE, INTERVAL 값 변경
BEGIN
DBMS_JOB.CHANGE(
:JNO -- [JOB] OUT BINARY_INTEGER, 실행시킬 JOB 번호
,'INSERT_JOB_TEST01;' -- [WHAT] IN VARCHAR,실제 작업을 수행하는 PL/SQL 또는 SQL 또는 PROCEDURE 등
,SYSDATE -- [NEXT_DATE] IN DATE DEFAULT SYSDATE,JOB이 수행될 다음 일자
,'SYSDATE_1/24/60' -- [INTERVAL] IN VARCHAR DEFAULT 'NULL', JOB이 수행될 다음 시간
);
END;
COMMIT;
3.2) WHAT / NEXT_DATE / INTERVAL 값 변경
DBMS_JOB.WHAT([변경할 JOB의 NUMBER],[변경할 WHAT 값 - PL/SQL PROCEDURE, SEQUENCE ]);
DBMS_JOB.NEXT_DATE([변경할 JOB의 NUMBER],[변경할 NEXT_DATE 값]);
DBMS_JOB.INTERVAL([변경할 JOB의 NUMBER],[변경할 INTERVAL 값]);
4) JOB 잠그기
DBMS_JOB.BROKEN([변경할 JOB의 NUMBER],[JOB을 BROKEN시킬 경우 TRUE, 정상상태의 경우 FALSE]);
4) JOB 즉시 실행
DBMS_JOB.RUN([실행할 JOB의 NUMBER]);
'개발 > oracle DB' 카테고리의 다른 글
[ORACLE] LIKE 검색시 '%'나 '_'가 검색조건으로 들어갔을때 전체 LIST가 조회되는 오류 해결방안 (0) | 2019.10.29 |
---|---|
[ORACLE] PACKAGE (0) | 2019.10.29 |
[oracle] WINDOW FUNCTION (0) | 2019.10.17 |
[oracle] DECODE 활용하기 (0) | 2019.10.15 |
[oracle] ORA-01861: literal does not match format string (0) | 2019.01.23 |