본문 바로가기
ORACLE DB

ORACLE 잡 스케줄러

by chief_sac 2021. 7. 3.
반응형
    • 테스트 테이블 CREATE TABLE JOB_TEST01 ( JOB_NO NUMBER, JOB_NAME VARCHAR2(10) );
    • 테스트용 시퀀스 CREATE SEQUENCE JOB_TEST_SEQ;
    • 테스트용 프록시저 CREATE OR REPLACE PROCEDURE INSERT_JOB_TEST01 IS BEGIN -- DBMS_RANDOM.VALUE(low IN NUMBER, high IN NUMBER) -- 파라미터 low : 최소범위 -- high : 최대 범위 INSERT INTO JOB_TEST01 VALUES ( JOB_TEST_SEQ.NEXTVAL, DBMS_RANDOM.STRING('A', 3)); END;
    • sysdate + 7 : 7일에 한번
    • sysdate + 1 : 하루에 한번
    • sysdate + 1/24 : 한 시간에 한번
    • sysdate + 1/1440 : 1분에 한번(24*60)
    • sysdate + 1/86400 : 1ch (246060) -- 테스트용 JOB DECLARE JNO NUMBER; BEGIN DBMS_JOB.SUBMIT(:JNO, 'INSERT_JOB_TEST01;', SYSDATE, 'sysdate + 1/86400', FALSE); END; COMMIT;
    • JOB번호확인용(나중에 삭제할 때 사용) SELECT * FROM USER_JOBS; -- 만들어진 데이터 확인 SELECT * FROM JOB_TEST01;
  • -JOB변경용 EXEC DBMS_JOB.CHANGE(:JNO, 'INSERT_JOB_TEST01;', SYSDATE, 'SYSDATE + 5/24/60');
    • JOB등록용 샘플 VARIABLE jobno NUMBER BEGIN DBMS_JOB.SUBMIT(:jobno, '프로시저명()', SYSDATE, 'trunc(sysdate) + 1 + 1/24'); END;
    • 등록된 스케줄을 삭제하는 쿼리 declare begin dbms_job.remove( jobno ); commit; end ;
  • -JOB번호입력해서 삭제함 EXEC DBMS_JOB.REMOVE('262'); --프록시저 삭제용 DROP PROCEDURE INSERT_JOB_TEST01;
반응형