우선, 스케쥴러란?
간단하게 표현하자면 날짜 또는 시간에 맞춰 어떤 일을 수행할지 설정 할 수 있는 기능이라고 할 수 있다.
구글에 검색해보면 스케쥴러 작성하는 방법에 대해 여러 글이 있다.
하지만 내 기준에서는 코드만 적혀있기 때문에 이해가 되지 않아서 참고는 하되 오라클 sql developer 자체의 기능으로 만들어봤다.
순서는 아래와 같다.
스케쥴러를 작성하기 위해서는
첫번째, 해당 명령문을 실행해서 job(스케쥴러)를 사용 할수 있는 권한을 부여한다
grant create any job to 사용자명;
ex) grant create any job to c##scott;
첫번째, 스케쥴러에서 사용할 프로시저를 생성한다
아래의 프로시저의 작성내용은 이러하다
-> orderdetail 테이블의 orderconfirm 즉, 주문일이 sysdate 오늘날짜에서 7일을 뺀 날짜
ex) ? < 2021-05-11
값보다 이전 날짜이고, orderstatus의 값이 '배송완료' 인 데이터를
'구매확정'으로 수정(Update) 하는 기능을 가지고 있다.
create or replace procedure status_update(p_orderstatus orderdetail.orderstatus%type)
is
begin
update orderdetail
set orderstatus = p_orderstatus, orderconfirm = sysdate
where orderconfirm < to_char(sysdate-7, 'YYYY-MM-DD') and orderstatus = '배송완료';
end status_update;
commit;
select to_char(sysdate-7, 'YYYY-MM-DD') from dual;
프로시저는 본인의 필요에 맞게 작성하기 바란다.
두번째, 스케쥴러 프로그램을 생성
왼쪽 카테고리 창을 클릭해서 보면 프로그램이라고 있을것이다
우클릭해서 새 프로그램을 클릭하면 아래의 창이 나올 것이다.
이 창에서 프로그램에 사용할 이름과 이 프로그램이 무슨 프로그램인지 작성을 해주고
빨간 표시된 부분을 클릭해서 내장 프로시저를 클릭한다
보기와 같이 나오는데, 기본값에 프로시저의 파라미터에 들어갈 값을 입력해준다
내 경우 '구매확정'을 입력해주었다
두번째에 있는 속성칸은 위 보기와 같이 최대 몇번까지 실행할 것인지 또는 실행기간을 정해놓을 수 있는데
내 경우는 사용하지 않기에 패스했다 기본값인 모두 선택되어 있지 않는 상태 그대로 두었다
세번째 칸인 sql로 이동해보면 위와 같이 쿼리문이 자동으로 적혀있다. 이것을 적용 누르면 된다.
이렇게 성공 알림창이 뜨고 프로그램 폴더를 눌러보면 생성된것을 알 수 있다
다음으로는 스케쥴을 생성한다.
프로그램 생성때와 마찬가지로 우클릭해서 새 일정을 눌러주고 이름과 설명 그리고 반복을 설정하기 위해 연필모양을 클릭한다
아차, 잠깐 끊고 아래에 있는 시작날짜를 눌러 언제부터 이 일정이 시작할지 아래와 같이 정해줘야 스케쥴이 시작된다
다시 이어가겠다.
연필 모양을 클릭하면
처음에 이렇게 나오는데 우리는 우측 모서리를 끌어서 늘리면 아래와 같이 보인다.
우리는 고급 모드를 사용할거다.
우측 고급모드를 클릭하면 빈도에서 미리 정의됨 Daily를 선택하고
왼쪽 위에 있는 새 반복 간격 입력에 있는
시간 단위, 분 단위, 초단위를 클릭해서 각각 시간을 클릭해주면 아래와 같이 오른쪽에 작성된다
확인을 누르자
위 내용은 매일, 23시 00분 00초에 실행된다는 것을 의미한다
우측에 sql을 들어가보면 이렇게 적용되어 있다
확인하고 적용을 누르면 일정이 생성되어 있는 것을 알 수 있다
마지막인 작업 (JOB) 을 생성해보자
아까와 동일하게 작업을 우클릭해서 새 작업을 열자
위와같이 나오는데 작업이름, 설명을 입력하고,
작업 유형을 명명된 프로그램을 클릭해서 만든 프로그램을 선택
작업 실행 시간을 일정을 클릭해서 본인이 만든 프로그램을 선택하여 아래와 같이 만들어주면 되겠다
두번째 작업인수를 들어가면 기본값이 정해져 있고 세번째 네번째는 둘러만 보고 sql에 가보면
아래와 같이 되어있다. 적용을 눌러주면 되겠다
자 이렇게 하면, 해당되는 스케쥴 시작시간에 맞춰 자동으로 시작 할 것이고
설정한 기간에 따라 오라클이 자동으로 등록한 프로시저를 실행할 것이다
아래는 실행한 결과로서
1. 작업 파일을 더블클릭 하고
2. 실행 로그탭으로 이동해서 보면
3. 내 경우 5분 1분 간격 스케쥴 시작테스트를 해보느라 로그가 나와있다
위와 같이 한 당신도 테스트를 해보면 아래와 같이 나올 것이다.
추가적으로 한가지, 이것은 테스트 해보지 않았지만 만약에 스케쥴러가 실행이 되지 않는다면
제어판 - > 서비스 -> oraclejobschedulerxe 가 꺼져있을 경우 실행시켜보자!
나는 이게 상관있지 않을까 해서 켜놓고 테스트해서 이게 영향을 끼칠지는 모르겠다 ㅎㅎ;
'Infrastructure > Database' 카테고리의 다른 글
MySql Database 생성, 유저 생성 (0) | 2021.09.22 |
---|---|
oracle 게시판 Rownum 사용 (0) | 2021.05.07 |
oracle 이전글, 다음글 구하기 (0) | 2021.04.19 |
oracle 커서 (0) | 2021.03.01 |
oracle 트리거 (0) | 2021.03.01 |