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