*** 오라클 스케줄 작업
1.종류
- DBMS_JOB (특정시간및 가격으로 특정 작업수행)
- DBMS_SCHEDULER - 오라클 10G 이상
(새로추가된 패키지, 복잡하고 정교한 수준의 스케줄 작업 가능) ** 이거쓸것!
2. (DBMS_SCHEDULER)실행가능 프로그램:
-PL/SQL, 저장 프로시저, 외부프로그램 사용가능
-DBMS_SCHEDULER.CREATE_PROGRAME 프로시저를 통해 등록가능
- [ALL/DBA/USER]_SCHEDULER_PROGRAMS 뷰를 통해서 확인 가능
3. (DBMS_SCHEDULER) 스케줄
- 작업을 수행할 스케줄
- DBMS_SCHEDULER.CREATE_SCHEDULE 프로시저를 통해 등록가능
- [ALL/DBA/USER]_SCHEDULER_SCHEDULERS 뷰를 통해서 확인 가능
4. (DBMS_SCHEDULER) 작업(JOB)
- 주어진 프로그램과 스케줄에 따라 수행할 작업을 말함(언제 무엇을)
- DBMS_SCHEDULER.CREATE_JOB 프로시저를 통해 등록가능
- [ALL/DBA/USER]_SCHEDULER_JOBS 뷰를 통해서 확인 가능
- 작업수행시 로그는 [ALL/DBA/USER]_SCHEDULER_JOB_LOG뷰
5. 일반적 등록방법
1) 실행시킬 PL/SQL 작성
2) 프로그램 생성 (dbms_scheduler.create_program())
3) 스케쥴 생성 (dbms_scheduler.create_schedule())
4) JOB 등록
(dbms_scheduler.create_job())
* 신규 JOB은 활성화 필요
6. 스케줄에 대한 정의없이 바로 JOB으로 등록
begin
dbms_scheduler.create_job(
job_name => 'SP_TEST1_SCHD', --신규 job이름
job_type => 'PLSQL_BLOCK',
job_action => 'begin SP_TEST1; end;', --실제 실행될 프로그램명
start_date => systimestamp, --지금즉시실행
end_date => null,
repeat_interval=> 'FREQ=SECONDLY; INTERVAL=5' --반복주기
enabled => true,
comments=> '5초에 한번씩 SP_TEST1 실행'
);
end;
* job_action 종류
- job_action에 파라미터 보낼때는
'begin SP_TEST1("param"); end;'
'begin SP_TEST1(TO_CHAR(SYSDATE, 'YYYYMMDD'),0,0); end;'
'begin SP_TEST1(); end;'
- job_type이 STORED_PROCEDURE 면, job_action은 프로시저명을 적는다
job_action => 'SP_TEST1'
- job_type이 EXECUTABLE 면, job_action은 실행프로그램을 적는다
job_action => '/home/user/test1.sh'
* start_date
start_date => trunc(SYSDATE) +1 + 8/24
다음날 오전 8시 시작
* repeat_interval(반복적 수행 형식)
repeat_interval=> 'FREQ=DAILY; INTERVAL=1' --매일 한번 실행
repeat_interval=> 'FREQ=HOURLY; INTERVAL=1' --1시간 간격으로 수행
repeat_interval=> 'FREQ=MINUTEY; INTERVAL=30' --30분 간격으로 수행
repeat_interval=> 'FREQ=SECONDLY; INTERVAL=5' --5초간격으로 수행
repeat_interval=> 'FREQ=WEEKLY; INTERVAL=1 --1주 간격으로 수행
repeat_interval=> 'FREQ=MONTHLY;' --매달 수행
repeat_interval=> 'FREQ=YEARLY;' --매년 수행
- BY절 사용시 더 구처적 시간 지정가능
repeat_interval=> 'FREQ=MONTHLY;BYWEEKNO=2,4; BYDAY=FRI' --매달 2,4주차 금요일 수행
repeat_interval=> 'FREQ=WEEKLY; BYDAY=FRI; BYHOUR=22; BYMINUTE=30;' --매주 금요일 22시 30분 수행
참고] 서울야인의 블로그
oracle dbms_scheduler를 사용하는 간단한 절차 및 방법 소개
출처 : 서울야인의.. | 블로그
- https://naver.me/5lCq7TYM
https://m.blog.naver.com/tpgpfkwkem0/220845165949
'Database > oracle' 카테고리의 다른 글
[oracle] 오라클 varray, nestedtable, 연관배열 (0) | 2023.04.17 |
---|---|
[oralce] 프로젝트 운영시 쓰는 SQL 기본운영사항 (0) | 2023.04.17 |
[oracle] PL_SQL 기본틀, 반복 FOR ..IN LOOP 기본 (0) | 2023.04.17 |
[oracle] 적금 월복리 (0) | 2023.04.17 |
[oracle] 계산식 기본1 (EXP, LN) (0) | 2023.04.17 |