DBMS_SCHEDULER
DBMS_SCHEDULER 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명합니다.
개요
Tibero에서는 주기적으로 DBMS_SCHEDULER에 의해서 데이터베이스에 추가된 JOB을 검사하여, 사용자가 설정한 시각이나 조건이 만족되면 해당하는 JOB을 실행합니다.
DBMS_SCHEDULER은 PSM에서 사용 가능한 문장을 JOB으로 등록하고, 이 JOB을 실행할 수 있는 연산을 제공하는 패키지입니다. DBMS_SCHEDULER 패키지 내의 프러시저를 이용하여, JOB을 데이터베이스에 추가하고 바로 실행하거나 정해진 시각과 조건에 따라서 실행되도록 설정할 수 있습니다.
다음은 DBMS_SCHEDULER 패키지의 특징입니다.
JOB의 생성, 실행 및 관리에는 권한이 필요하다. 자세한 내용은 “17.1. 개요”의 권한을 참고합니다.
JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업도 자동으로 커밋됩니다.
다음의 뷰를 지원합니다.
단, 현재 버전에서는 Scheduler의 chain 기능을 지원하지 않는다. 따라서
*_SCHEDULER_CHAINS,*_SCHEDULER_RULES,*_SCHEDULER_RULE_CTX,*_SCHEDULER_STEPS,*_SCHEDULER_STEP_CTX뷰에는 데이터가 생성되지 않으며, 관련 컬럼 또한 실제로 사용되지 않는다.
[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

