본문 바로가기
다른 DBMS/Tibero

DBMS_Scheduler

by 취미툰 2021. 1. 13.
반응형

티베로에도 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;
/

 

참고 :  technet.tmaxsoft.com/upload/download/online/tibero/pver-20140808-000002/tibero_pkg/chap_dbms_job.html

 

 

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;
/

 

 

참고 : technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_pkg/chap_dbms_scheduler.html

 

 

오라클 스케줄러와의 차이점은 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;
반응형

댓글