더북(TheBook)

사전 준비 작업은 모두 끝났다. 이제 잡 객체를 만들어야 하는데 이번에는 프로그램과 스케줄 객체는 사용하지 않고 잡 객체만 생성해 스케줄링을 할 것이다.

입력

    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란 프로시저를 호출해 매개변수로 전달할 값을 설정했고 마지막으로 잡을 활성화시켜 바로 잡이 실행되도록 한 것이다.

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