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

