더북(TheBook)

그럼 이전에 만들었던 30번 잡을 일시 중지시켜 보자. 중지시키려면 두 번째 매개변수 값으로 TRUE를 넘겨야 한다.

입력

    BEGIN
      -- 잡의 중지
      DBMS_JOB.BROKEN(30, TRUE);
      COMMIT;
    END;

결과

    익명 블록이 완료되었습니다.

중지됐는지 확인하려면 USER_JOBS 뷰의 BROKEN 컬럼 값을 보면 된다. 중지된 상태라면 이 값이 ‘Y’로 바뀐다.

입력

    SELECT job, last_date, last_sec, next_date, next_sec, broken, interval, failures, what
      FROM   user_jobs;

결과

    JOB  LAST_DATE   LAST_SEC   NEXT_DATE           NEXT_SEC            BROKEN
    ---- ----------- ---------- ------------------- ------------------- ------
    30   2014-07-14  22:39:40   4000-01-01          00:00:00             Y

    INTERVAL           FAILURES   WHAT
    ------------------ ---------- -------------------
    SYSDATE + 1/60/24  0          ch15_job_test_proc;

22시 39분 40초에 마지막으로 잡이 실행되었고 BROKEN 컬럼 값은 ‘Y’로, NEXT_DATE와 NEXT_SEC 컬럼 값은 의미 없는 값으로 바뀐 것을 알 수 있다. 즉 30번 잡은 중단된 상태가 됐다. 중단된 잡을 다시 실행하려면 BROKEN 프로시저의 두 번째 매개변수에 TRUE 대신 FALSE를 넘기면 된다.

입력

    BEGIN
      -- 잡 재실행
      DBMS_JOB.BROKEN(30, FALSE);

      COMMIT;
    END;

결과

    익명 블록이 완료되었습니다.

입력

    SELECT job, last_date, last_sec, next_date, next_sec, broken, interval, failures, what
      FROM user_jobs;

결과

    JOB  LAST_DATE  LAST_SEC  NEXT_DATE    NEXT_SEC   BROKEN    INTERVAL
    ---- ---------- --------- ------------ ---------- --------- ------------------
    30   2014-07-14 23:30:50  2014-07-14   23:31:50   N         SYSDATE + 1/60/24

    FAILURES  WHAT
    --------- --------------------
    0         ch15_job_test_proc;

잡이 중지되었다가 다시 실행되었음을 알 수 있다. NEXT_DATE와 NEXT_SEC는 다시 정상적인 값으로 설정되었고 BROKEN 컬럼 값도 ‘N’으로 바뀌었다. LAST_SEC 컬럼 값이 23시 30분 50초로 되어 있는데, 이는 BROKEN 프로시저의 세 번째 매개변수인 NEXT_DATE의 값, 즉 생략해서 현재일자와 시간으로 설정되었다. 방금 전의 익명 블록을 실행시킨 시간이 23시 30분 50초이며, 앞으로는 이 시간을 기준으로 1분마다 계속 실행될 것이다.

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