티베로에도 JOB과 SCHEDULE이 있습니다.
JOB
다음은 DBMS_JOB 패키지의 특징
-
DBMS_JOB 패키지의 사용할 때 DBA 권한은 필요하지 않으며, 추가된 JOB은 오직 JOB의 소유자만 실행하거나 변경할 수 있다.
-
특정 인스턴스(instance)에서 JOB을 실행하도록 지정하는 기능은 지원하지 않는다. 따라서 파라미터에 입력 값으로 instance와 force parameter가 입력될 경우 무시하게 된다.
-
JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업도 자동으로 커밋된다.
-
현재 데이터베이스에 추가된 JOB은 DBA_JOBS, ALL_JOBS, USER_JOBS 뷰를 통해 확인할 수 있다.
-
JOB 실행이 실패한 경우에는 재실행되며, 16번 실패하게 되면 해당 JOB은 broken 상태가 된다.
-
실행 중인 JOB을 정지할 수 있는 기능은 제공하지 않는다.
JOB은 interval 작성 시 sysdate + 1/86400과 같은 형식으로 작성하여 시간을 조절합니다.
JOB 생성 예제
DECLARE
J_TEST number;
BEGIN
DBMS_JOB.SUBMIT( J_TEST --jobno
,'SYS.PL_INS_TEST;' --what
, sysdate + 3/86400 --next_date
, 'sysdate + 3/86400' --interval
, TRUE --no_parse
);
END;
/
SCHEDULER
다음은 DBMS_SCHEDULER 패키지의 특징
-
DBMS_SCHEDULER 패키지의 사용할 때 DBA 권한은 필요하지 않으며, 추가된 JOB은 오직 JOB의 소유자만 실행하거나 변경할 수 있다.
-
JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업도 자동으로 커밋된다.
-
현재 데이터베이스에 추가된 JOB은 [DBA | ALL | USER]_SCHEDULER_JOBS 뷰를 통해 확인할 수 있다.
SCHEDULER 생성 예제
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'PL_INS_TEST2',
job_type => 'PSM_BLOCK',
job_action => 'BEGIN sys.PL_INS_TEST2; END;',
start_date => sysdate,
repeat_interval => '* * * * * *',
enabled => TRUE,
comments => 'SCHEDULER TEST');
END;
/
오라클 스케줄러와의 차이점은 REPEAT_INTERVAL에 있습니다.
티베로는 CRON 표현식 형식으로 repeat_interval을 표현합니다.
오라클은 scheduler에서 사용하는 문법이 따로 있어서 표현할 수 있게 하였습니다.
직관적인것은 오라클쪽이 더 직관적인것 같습니다. 하지만 티베로도 cron 사용에 익숙한 분들이라면 사용하기 편할지도 모르겠네요.
오라클 스케줄러 예제
BEGIN
DBMS_SCHEDULER.CREATE_JOB
(
JOB_NAME => 'TEST_JOB',
JOB_TYPE => 'STORED_PROCEDURE',
JOB_ACTION => 'TEST_JOB',
REPEAT_INTERVAL => 'FREQ=MINUTELY; INTERVAL =1', --1분에 1번
COMMENTS => '테스트 잡'
);
END;
'다른 DBMS > Tibero' 카테고리의 다른 글
'내용' 안에 '(Single quotation) 추가하기 (0) | 2021.04.20 |
---|---|
Daily Check 스크립트 (0) | 2021.02.22 |
[에러해결]TBR-10019 Updating partition key column would cause a partition change. (0) | 2021.01.12 |
[에러해결]TBR-10018 Partition key does not map to a partition. (0) | 2021.01.04 |
아카이브 모드 변경 (0) | 2020.12.21 |
댓글