더북(TheBook)

① 잡 등록 : DBMS_JOB.SUMMIT

등록할 프로그램이 준비됐다면 DBMS_JOB 패키지의 SUMMIT 프로시저를 호출해, 잡을 생성하면설정한 주기대로 작업이 실행된다.

    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: 잡 번호, 출력 변수로 자동으로 번호가 매겨진다.

what: 실행될 프로그램, 문자열 형태로 SQL이나 PL/SQL이 온다.
(예: 위에서 만들었던 ch15_job_test_proc과 같은 프로시저)

next_date: 잡이 실행될 다음 날짜(시간), 디폴트 값은 SYSDATE

interval: 잡의 실행 주기로, 문자열 형태의 값

no_parse: FALSE로 설정하면, 오라클은 해당 잡과 연관된 프로시저를 파싱하고, TRUE로 설정하면 잡이 맨 처음 실행됐을 때만 파싱한다. 디폴트 값은 FALSE.

instance: 잡을 등록할 때 이 잡을 실행시킬 수 있는 특정 인스턴스를 명시하는데, 디폴트 값은 0으로 이는 어느 인스턴스나 실행하라는 의미다. NULL이나 음수를 명시하면 ORA-23319 오류가 발생한다.

force: TRUE로 설정하면, instance 매개변수에서 설정한 인스턴스 번호 외의 양수인 다른 인스턴스가 해당 잡을 실행할 수 있다. FALSE(디폴트 값)로 설정하면, instance 매개변수에서 설정한 인스턴스 외에 다른 인스턴스가 잡을 실행하면 오류가 발생된다.

총 7개의 매개변수 중에서 중요한 것은 what, next_date, interval 뿐이다. what은 실제 수행될 프로그램으로 SQL이나 PL/SQL을 문자열 형태로 명시한다. next_date에는 다음 번에 실행될 날짜와 시간을, interval에는 실행될 빈도(주기)를 문자열 형태로 전달한다. 특히 유의해야 할 사항은 interval 매개변수인데, 수행주기에 따른 설정 값을 정리하면 다음과 같다.

일주일에 1번: SYSDATE + 7

하루에 1번: SYSDATE + 1

1시간에 1번: SYSDATE + 1/24

1분에 1회: SYSDATE + 1/60/24

10분에 1회: SYSDATE + 10/60/24

30초에 1회: SYSDATE + 30 / 60 / 60 / 24

10초에 1회: SYSDATE + 10 / 60 / 60 / 24

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.