DBMS_JOB_WITH_NAME
DBMS_JOB_WITH_NAME 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명합니다.
개요
Tibero에서는 주기적으로 데이터베이스에 추가된 JOB을 검사하여, 사용자가 설정한 시각이 되면 해당하는 JOB을 실행합니다.
DBMS_JOB_WITH_NAME은 PSM에서 사용 가능한 문장을 JOB으로 등록하고, 이 JOB을 실행할 수 있는 연산을 제공하는 패키지입니다. DBMS_JOB_WITH_NAME 패키지 내의 프러시저를 이용하여, JOB을 데이터베이스에 추가하고 바로 실행하거나 정해진 시각에 실행되도록 설정할 수 있습니다. 기본적으로 DBMS_JOB 패키지와 동일한 기능을 제공하며, JOB ID 대신 name을 통한 관리를 지원합니다.
다음은 DBMS_JOB_WITH_NAME 패키지의 특징입니다.
JOB의 생성, 실행 및 관리에는 권한이 필요하다. 자세한 내용은 “17.1. 개요”의 권한을 참고합니다.
JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업 도 자동으로 커밋됩니다.
현재 데이터베이스에 추가된 JOB은 DBA_JOBS_WITH_NAME, ALL_JOBS_WITH_NAME, US ER_JOBS_WITH_NAME 뷰를 통해 확인할 수 있습니다.
JOB 실행이 실패한 경우에는 재실행되며, 16번 실패하게 되면 해당 JOB은 broken 상태가 됩니다.
실행 중인 JOB을 정지할 수 있는 기능은 제공하지 않습니다.
프러시저
본 절에서는 DBMS_JOB_WITH_NAME 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.
BROKEN
저장된 JOB의 상태를 정상 또는 broken 상태로 설정하는 프러시저입니다. broken되어 있던 JOB을 정상상태로 만들 경우 JOB의 다음 실행 시각을 설정할 수 있습니다.
BROKEN 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
broken
TRUE: JOB을 broken 상태로 설정하려는 경우
FALSE: JOB을 정상(Not broken) 상태로 설정하려는 경우
next_date
broken이 TRUE인 경우 무시
broken이 FALSE인 경우 다음 실행 시각을 설정
예제
CHANGE
저장된 JOB의 필드를 변경하는 프러시저입니다.
CHANGE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
what
실행할 PL/SQL 프러시저 또는 PSM 문장의 시퀀스
next_date
JOB을 실행할 다음 시각
interval
다음 JOB이 실행될 시각을 계산하기 위한 연산식
자세한 내용은 “18.2.4. INTERVAL”을 참고
instance
JOB을 수행할 INSTANCE (기본값: 0, ANY_INSTANCE의 의미)
force
지원되지 않는 기능이므로 값을 무시
예제
INSTANCE
JOB을 수행할 INSTANCE를 변경하는 프러시저입니다.
INSTANCE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터DBMS_JOB
job
실행할 JOB의 번호
instance
JOB을 수행할 INSTANCE (0은 ANY_INSTANCE의 의미)
force
지원되지 않는 기능이므로 값을 무시
예제
INTERVAL
JOB을 얼마나 자주 실행할지 정하는 파라미터를 변경하는 프러시저입니다.
INTERVAL 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
instance
다음에 JOB을 실행할 시각인 next_date를 업데이트하기 위한 연산식
NULL 또는 날짜형으로 evaluate될 수 있는 연산식의 문자열이어야 함
(최 소 초 단위까지 가능). 문자열 입력 시 반드시 작은따옴표(' ')로 감싸야 함
JOB을 실행하기 전에 evaluate 됨
JOB이 성공적으로 실행되고, interval의 계산 값이 NULL이면 해당 JOB은 삭제
다음은 interval 파라미터의 사용 예
– 예1)
'sysdate + 1'
하루에 한 번씩 실행
– 예2)
'next_day(sysdate,''MONDAY'')'
매주 월요일에 실행
– 예3)
'null'
한 번만 실행
예제
NAME
JOB의 이름을 변경하는 프러시저입니다. 실행된 후에는 new_name 값에 의해 업데이트 됩니다.
NAME 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
new_name
실행할 JOB의 새로운 이름
예제
NEXT_DATE
JOB이 스케줄되어 자동으로 실행될 시각을 변경하는 프러시저입니다. 실행된 후에는 interval 값에 의해 업 데이트 됩니다.
NEXT_DATE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
next_date
JOB이 스케줄되어 실행될 시각
예제
REMOVE
데이터베이스에 추가된 JOB을 삭제하는 프러시저입니다.
REMOVE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
삭제할 JOB의 이름
예제
RUN
JOB을 현재 세션에서 즉시 실행하는 프러시저입니다. JOB이 broken되어 있어도 실행하고, 실행에 성공한 경우 JOB을 정상 상태로 변경합니다.
RUN 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
force
지원되지 않는 기능이므로 값을 무시
예제
SUBMIT
데이터베이스에 새로운 JOB을 추가하는 프러시저입니다.
SUBMIT 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 번호
name
실행할 JOB의 이름
what
실행할 PL/SQL 프러시저 또는 PSM 문장의 시퀀스
next_date
JOB을 다음에 실행할 시각
interval
다음 JOB이 실행될 시각을 계산하기 위한 연산식
자세한 내용은 “INTERVAL”을 참고
no_parse
TRUE : submit을 할 때 JOB을 파싱하지 않고, JOB이 실행될 때 파싱을 하게 됨
따라서 파싱의 실패 여부가 최초 실행 시점에 보고됨
FALSE : JOB에 관련된 프러시저를 미리 파싱
instance
JOB을 수행할 INSTANCE (기본값: 0, ANY_INSTANCE의 의미)
force
지원되지 않는 기능이므로 값을 무시
예제
WHAT
JOB이 실행하는 작업을 변경하는 프러시저입니다.
WHAT 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
job
실행할 JOB의 이름
what
실행할 PL/SQL 프러시저 또는 PSM 문장의 시퀀스
항상 세미콜론(;)으 로 끝나는 문자열이 와야 함
예를 들어 다음과 같은 문자열이 올 수 있음
– 예1)
psm_proc(''abc'', 10);
– 예2)
dbms_output.put_line(''ok'');
– 예3)
declare x number; begin
x := x + 1;
dbms_outout.put_line(x); end;
예제
Last updated

