그럼 이전에 만들었던 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분마다 계속 실행될 것이다.