DBMS_SCHEDULER

DBMS_SCHEDULER 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명합니다.

개요

Tibero에서는 주기적으로 DBMS_SCHEDULER에 의해서 데이터베이스에 추가된 JOB을 검사하여, 사용자가 설정한 시각이나 조건이 만족되면 해당하는 JOB을 실행합니다.

DBMS_SCHEDULER은 PSM에서 사용 가능한 문장을 JOB으로 등록하고, 이 JOB을 실행할 수 있는 연산을 제공하는 패키지입니다. DBMS_SCHEDULER 패키지 내의 프러시저를 이용하여, JOB을 데이터베이스에 추가하고 바로 실행하거나 정해진 시각과 조건에 따라서 실행되도록 설정할 수 있습니다.

다음은 DBMS_SCHEDULER 패키지의 특징입니다.

  • JOB의 생성, 실행 및 관리에는 권한이 필요하다. 자세한 내용은 “17.1. 개요”의 권한을 참고합니다.

  • JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업도 자동으로 커밋됩니다.

  • 다음의 뷰를 지원합니다.

[DBA | ALL | USER]_SCHEDULER_JOBS
[DBA | ALL | USER]_SCHEDULER_JOB_LOG
[DBA | ALL | USER]_SCHEDULER_JOB_RUN_DETAILS
[DBA | ALL | USER]_SCHEDULER_PROGRAMS
[DBA | ALL | USER]_SCHEDULER_RULES
[DBA | ALL | USER]_SCHEDULER_RULE_CTX
[DBA | ALL | USER]_SCHEDULER_RUNNING_JOBS
[DBA | ALL | USER]_SCHEDULER_SCHEDULES
[DBA | ALL | USER]_SCHEDULER_STEPS
[DBA | ALL | USER]_SCHEDULER_STEP_CTX
  • 등록된 JOB은 내부적으로 DBMS_JOB 패키지를 통해서 수행됩니다.

  • 실행 중인 JOB을 정지할 수 있는 기능은 제공하지 않습니다.

시간 기반으로 스케줄링을 설정할 때는 Calendaring Syntax를 사용합니다.

프러시저

본 절에서는 DBMS_SCHEDULER 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.

CREATE_JOB

JOB을 생성하는 프러시저입니다. enabled 파라미터를 TRUE로 설정하는 경우 설정한 스케줄에 따라 스케줄러에의해 자동으로 실행됩니다. 하지만 disabled 상태인 경우 명시적으로 SET_ATTRIBUTE 프러시저를 통해 enabled 상태로 변경하기 전까지 실행되지 않습니다.

CREATE_JOB 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

job_name

  • 생성할 JOB의 이름을 지정

  • 다른 객체와 구분되는 이름으로 지정해야 함

job_type

  • 생성할 JOB의 타입을 지정

  • 지원되는 타입은 아래와 같음

  • PSM_BLOCK : PSM 코드를 생성하는 JOB. JOB에 인자를 전달하는 기능은 지원하지 않으므로 number_of_arguments 파라미터는 0이 되어야 함

job_action

  • JOB이 수행할 동작을 지정

  • 타입별로 아래와 같은 동작을 지정할 수 있음

  • PSM_BLOCK : PSM 코드를 지정. 반드시 세미콜론으로 끝나야 함. 예를 들어 다음과 같이 설정.

BEGIN my_proc(); END;

또는

DECLARE arg pls_integer:= 10; BEGIN my_proc2(arg);

END;

program_name

  • JOB과 관련된 프로그램 이름을 지정

schedule_name

JOB과 관련된 SCHEDULE의 이름을 지정

number_of_arguments

지원되지 않는 기능이므로 값을 무시

start_date

  • 스케줄러에 의해서 JOB을 시작할 시간을 지정

  • NULL인 경우 현재 시간으로 설정됨. 시스템의 상태에 따라서 시작 시간은 오차가 발생할 수 있음. repeat_interval에 지정된 식은 이 값을 참조하여 다음 수행 스케줄을 결정

repeat_interval

  • JOB 수행 주기를 지정

  • NULL 값으로 지정한 경우 한 번만 수행

  • 주기는 Calendaring Syntax를 이용하여 지정할 수 있음

event_condition

지원되지 않는 기능이므로 값을 무시

queue_spec

지원되지 않는 기능이므로 값을 무시

end_date

스케줄러에 의해서 JOB이 마지막으로 수행될 시간을 지정

job_class

지원되지 않는 기능이므로 값을 무시

enabled

  • JOB을 생성할 때 enabled 상태를 지정

  • ENABLE, DISABLE 프러시저를 통해 값을 변경할 수 있음

(TRUE/FALSE, 기본값: FALSE)

auto_drop

수행이 완료된 JOB을 자동으로 삭제할지 여부를 지정

comments

JOB에 대한 주석을 지정

credential_name

지원되지 않는 기능이므로 값을 무시

destination_name

지원되지 않는 기능이므로 값을 무시

  • 예제

CREATE_PROGRAM

프로그램을 생성하는 프러시저입니다.

CREATE_PROGRAM 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

program_name

생성할 프로그램의 이름을 지정

program_type

  • 생성할 프로그램의 타입을 지정

  • 현재는 'PSM_BLOCK' 타입만 지원

program_action

  • 프로그램이 수행할 동작을 지정

  • 타입별로 아래와 같은 동작을 지정할 수 있음

– PSM_BLOCK : PSM 코드를 지정. 반드시 세미콜론으로 끝나야 함. 예)

number_of_arguments

지원되지 않는 기능이므로 값을 무시

enabled

  • 프로그램을 생성할 때 enabled 상태를 지정

  • ENABLE, DISABLE 프러시저를 통해 값을 변경할 수 있음

(TRUE/FALSE, 기본값: FALSE)

comments

프로그램에 대한 주석을 지정

  • 예제

CREATE_SCHEDULE

SCHEDULE을 생성하는 프러시저입니다.

CREATE_SCHEDULE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

schedule_name

생성할 SCHEDULE의 이름을 지정

start_date

스케줄러에 의해서 SCHEDULE을 시작할 시간을 지정

NULL인 경우 현재 시간으로 설정 시스템의 상태에 따라서 시작 시간은 오차가 발생할 수 있음 repeat_interval에 지정된 식은 이 값을 참조하여 다음 수행 스케줄을 결정

repeat_interval

SCHEDULE의 수행 주기를 지정 NULL 값으로 지정한 경우 한 번만 수행됨

주기는 Calendaring Syntax를 이용하여 지정할 수 있음

end_date

스케줄러에 의해서 마지막으로 SCHEDULE이 수행될 시간을 지정

comments

프로그램에 대한 주석을 지정

  • 예제

DISABLE

이 프러시저는 program, job 을 disable하기 위해 사용합니다. 각 객체의 enabled attribute를 'FALSE'로 설정합니다.

DISABLE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

name

  • 속성을 변경할 객체의 이름을 지정

  • 현재 JOB만 지원

force

지원되지 않는 기능이므로 값을 무시

commit_semantics

지원되지 않는 기능이므로 값을 무시

  • 예제

DROP_JOB

데이터베이스에서 기존 JOB을 삭제하는 프러시저입니다.

DROP_JOB 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

job_name

삭제할 JOB의 이름을 지정

force

지원되지 않는 기능이므로 값을 무시

defer

지원되지 않는 기능이므로 값을 무시

commit_semantics

지원되지 않는 기능이므로 값을 무시

  • 예제

DROP_PROGRAM

데이터베이스에서 기존 프로그램을 삭제하는 프러시저입니다.

DROP_PROGRAM 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

program_name

삭제할 프로그램 이름을 지정.

force

지원되지 않는 기능이므로 값을 무시

  • 예제

DROP_SCHEDULE

데이터베이스에서 기존 SCHEDULE을 삭제하는 프러시저입니다.

DROP_SCHEDULE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

schedule_name

삭제할 SCHEDULE의 이름을 지정

force

지원되지 않는 기능이므로 값을 무시

  • 예제

ENABLE

이 프러시저는 program, job 을 enable하기 위해 사용합니다. 각 객체의 enabled attribute를 'TRUE'로 설정합니다.

ENABLE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

name

  • 속성을 변경할 객체의 이름을 지정

  • 현재 JOB만 지원

commit_semantics

지원되지 않는 기능이므로 값을 무시

  • 예제

PURGE_LOG

이 프러시저는 기록된 log를 지워준다.

PURGE_LOG 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

log_history

log의 내용 중 해당 설정값 이상의 내용들을 삭제

which_log

  • log를 삭제할 객체의 타입을 지정

  • 현재는 'JOB_LOG'만 지원

job_name

log를 삭제할 객체의 이름을 지정

  • 예제

RUN_JOB

일반적으로 JOB이 enabled 상태이면 스케줄러에 의해서 자동으로 수행되지만, 이와는 별개로 수동으로 JOB을 수행하기 위한 프러시저입니다.

RUN_JOB 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

name

수행할 JOB 이름을 지정

use_current_session

  • 지원되지 않는 기능이므로 값 무시

  • 항상 현재 세션으로 수행됨

  • 예제

SET_ATTRIBUTE

job, program 객체의 속성을 변경하기 위한 프러시저입니다.

SET_ATTRIBUTE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

name

attribute를 변경할 객체의 이름을 지정

attribute

변경할 attribute를 지정

다음의 attribute들은 BINARY_INTEGER 속성 변경을 지원.

  • instance_id(instance_id 값은 JOB을 수행할 TAC 노드 인스턴스를 지정하며, 0인 경우 any_instance에 해당.)

  • job_priority

  • max_runs

  • max_failures

  • logging_level

  • schedule_limit

다음의 attribute들은 BOOLEAN 속성 변경을 지원

  • auto_drop

  • restartable

BOOLEAN 타입 속성 설정 시 value 값을 명시적으로 지정하지 않으면 기본적으로 FALSE로 처리됨

다음의 attribute들은 VARCHAR2 속성 변경을 지원

  • job_action

  • repeat_interval

  • program_action

  • auto_drop ('TRUE'와 'FALSE'만 지원)

  • restartable ('TRUE'와 'FALSE'만 지원)

value

변경할 값을 지정

  • 예제

SET_ATTRIBUTE_NULL

job, program 객체의 속성을 NULL로 변경하기 위한 프러시저입니다.

SET_ATTRIBUTE_NULL 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

name

attribute를 변경할 객체의 이름을 지정

attribute

변경할 attribute를 지정 다음의 attribute를 지원.

  • max_failures

  • max_runs

  • schedule_limit

  • 예제

STOP_JOB

데이터베이스에서 현재 실행 중인 JOB을 중지하는 프러시저입니다.

STOP_JOB 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

job_name

중지할 JOB의 이름을 지정

force

지원되지 않는 기능이므로 값을 무시

  • 예제

Last updated