현상
비활성화(Disable) 상태인 Job scheduler를 활성화(Enable) 하였을 경우 Job이 즉시 수행되는 현상으로,
활성화 시 LAST_START_DATE 컬럼이 갱신되며 Job이 수행됩니다.
[시나리오]
1. 테이블 생성
SQL> create table test(id number);
Table 'TEST' created.
SQL
복사
2. job scheduler 생성 (17:55분부터 1분마다 insert 1 )
SQL> BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'INSERT_JOB',
job_type => 'PSM_BLOCK',
job_action => 'BEGIN INSERT INTO test (id) VALUES (1); COMMIT; END;',
start_date => TO_TIMESTAMP(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 17:55:00', 'YYYY-MM-DD HH24:MI:SS'),
repeat_interval => 'FREQ=MINUTELY; INTERVAL=1',
enabled => TRUE
);
END;
/
PSM completed.
SQL
복사
3. 생성 확인
SQL> SELECT run_count, enabled, state, START_DATE, LAST_START_DATE, next_run_date, failure_count
FROM user_scheduler_jobs
WHERE JOB_NAME='INSERT_JOB';
RUN_COUNT ENABLED STATE START_DATE LAST_START_DATE NEXT_RUN_DATE FAILURE_COUNT
---------- ------- ---------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------
TRUE 2025/05/19 17:55:00.000000 Asia/Seoul
1 row selected
SQL
복사
4. Job disable
SQL>
BEGIN
DBMS_SCHEDULER.DISABLE('INSERT_JOB');
END;
/
PSM completed.
SQL
복사
5. Disable 확인
SQL> SELECT run_count, enabled, state, START_DATE, LAST_START_DATE, next_run_date, failure_count
FROM user_scheduler_jobs
WHERE JOB_NAME='INSERT_JOB';
RUN_COUNT ENABLED STATE START_DATE LAST_START_DATE NEXT_RUN_DATE FAILURE_COUNT
---------- ------- ---------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------
FALSE 2025/05/19 17:55:00.000000 Asia/Seoul
1 row selected.
SQL
복사
6. 테이블 확인
SQL> select * from test;
0 row selected.
SQL
복사
7. Job enable
SQL> BEGIN
DBMS_SCHEDULER.enable('INSERT_JOB');
END;
/
PSM completed.
SQL
복사
8. 상태 확인 (LAST_START_DATE 갱신)
SQL> SELECT run_count, enabled, state, START_DATE, LAST_START_DATE, next_run_date, failure_count
FROM user_scheduler_jobs
WHERE JOB_NAME='INSERT_JOB';
RUN_COUNT ENABLED STATE START_DATE LAST_START_DATE NEXT_RUN_DATE FAILURE_COUNT
---------- ------- ---------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------
1 TRUE 2025/05/19 17:55:00.000000 Asia/Seoul 2025/05/19 15:50:34.000000 Asia/Seoul 2025/05/19 15:51:34.000000 Asia/Seoul
1 row selected.
SQL
복사
9. 상태 확인 (LAST_START_DATE 갱신)
SQL> select * from test;
ID
----------
1
SQL
복사
원인
Scheduler Job 경우 broken 해제 처리가 없었고, next_date 를 항상 현재 시각으로 변경하고 있어
Job이 즉시 수행되었습니다.
해결
패치를 적용함으로써, Job이 사용자가 지정한 시간에 수행될 수 있도록 문제를 개선할 수 있습니다.
(적용패치: 338849)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.