개발/oracle DB

[ORACLE] JOB

smile-haha 2019. 10. 29. 11:11
반응형

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]); 

 

반응형