① 잡 등록 : 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