사전 준비 작업은 모두 끝났다. 이제 잡 객체를 만들어야 하는데 이번에는 프로그램과 스케줄 객체는 사용하지 않고 잡 객체만 생성해 스케줄링을 할 것이다.
입력
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'MY_EX_JOB1', -- 잡 명
job_type => 'EXECUTABLE', -- 외부 실행 파일
job_action => 'c:\windows\system32\cmd.exe', -- 윈도우의 CMD.EXE를 실행
number_of_arguments => 2, -- 매개변수가 2개라는 의미
repeat_interval => 'FREQ=MINUTELY; INTERVAL=1', -- 1분에 1회씩 수행
comments => '외부파일 실행 잡객체' ); -- 잡 설명
-- 매개변수1
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('MY_EX_JOB1',1,'/c');
-- 매개변수2 (실제 배치파일)
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('MY_EX_JOB1',2,'c:\scheduler_test.bat');
DBMS_SCHEDULER.ENABLE ('MY_EX_JOB1'); -- 잡 활성화
END;
결과
익명 블록이 완료되었습니다.
성공적으로 생성되었다. 위 소스를 설명하면 MY_EX_JOB1이라는 이름으로 잡을 생성했는데 외부 실행 파일을 실행하므로 job_type 매개변수로 ‘EXECUTABLE’을 입력했다. job_action 매개변수로 윈도우의 cmd.exe 파일을 경로명까지 포함해서 기술했는데, DBMS_SCHEDULER 패키지에서는 직접 배치파일을 실행할 수 없으므로 cmd.exe를 실행하고 이 파일의 매개변수로 scheduler_test.bat이란 배치파일을 명시했다. 이 배치파일은 C 드라이브에 위치시켰지만 이 파일이 실행하는 insert_test.sql 파일은 D드라이브에 있다는 점을 잊지 말자. 그리고 SET_JOB_ARGUMENT_VALUE란 프로시저를 호출해 매개변수로 전달할 값을 설정했고 마지막으로 잡을 활성화시켜 바로 잡이 실행되도록 한 것이다.