프로시저 작성을 완료 했으니 이제 스케쥴러에 등록을 해 보겠습니다.(자세하게 파악은 못했지만 스케줄과 잡은 구분되는 단어인것 같네요. 스케줄에 잡이 포함되는것 같습니다. 개별적인 job들을 따로 등록할수 있고 같은 시간에 동작할 job들은 스케줄을 만들어서 공통으로 동작할 시간으로 사용하는 거지요. 하지만 제 토드엔 스케줄이 안보이므로 일단 패스. 아마 sysadmin 이 아니거나 오라클10이 아니라서 그런듯.. 합니다.)
2012/12/13 - [분류 전체보기] - 오라클의 스케쥴 작업 (Jobs) 및 프로시저(procedure) 살펴보기 - 1
토드의 schema browser 에서 Jobs 탭을 선택합니다.
오른쪽마우스 메뉴에서 생성하기를 선택합니다.
열려진 대화상자에서 필요한 데이터를 입력합니다.
1. 작업이 시작될 날짜와 시간을 결정합니다.(first execution, At this time)
2. 매번 작동할 시간간격을 선택합니다. (subsequent executions)
3. What to excute 에 이전에 작성해둔 프로시저명을 입력합니다.
4. ShowSQL 버튼을 누르면 자동 작성될 SQL 구문을 미리 확인 할 수 있습니다.
5. OK 버튼을 누르고 완성된 잡을 선택하여 스크립트를 살펴보면 다음과 같습니다.
TEST_DATA 테이블의 값을 조금 수정해 두고 Job 을 1분뒤 첫 작동을 하도록 설정하고 등록하였습니다. 1분후 TEST_STATS 테이블에는 기대하던 대로 원하던 결과값이 정확히 변경 적용된것을 확인할 수 있었습니다. 또한 30분마다 작동하도록 설정하였으므로 소스테이블의 데이터를 다시한번 수정해 주고 30분 후에 다시한번 확인해 본 결과 원하던 값이 정확히 적용되었음을 확인할 수 있었습니다. 프로시저가 어려웠지 Job 등록은 어렵지 않네요. ^^
interval 은 다음작업할 시간까지의 간격을 나타내는 수식이 들어가는 부분이다.
'sysdate + 1/24' 1시간에 1번
'sysdate + 1' 1일에 1번
'sysdate + 7' 일주일에 한번
단순작업 주기가 아닌 특정 일시를 지정해 주고 싶다면 다음과 같이 작성다.
'trunc(sysdate) + 6 + 1/24' 매일 06시에 작업 실행
'trunc(sysdate, ''D'') + 7' 매주 일요일 00시에 작업 실행
위 잡들의 시간은 user_jobs 테이블에서 확인할수 있다. next_date 컬럼에서 다음에 작동할 시간을 알 수 있으며, interval 컬럼 부분을 복사해서 다음 쿼리를 사용해도 같은 결과를 얻을 수 있다.
SELECT trunc(sysdate) + 6 + 1/24 FROM DUAL;
하지만 'sysdate + 1' 부분을 집어넣고서 어랏 값이 달라~! 어떡~하지~ 같은 소리는 하지 말자. '지금 시간'으로 부터 계산되는거니까 당연히 다르다.
'DB' 카테고리의 다른 글
[oracle] sqlplus 사용 정리 (0) | 2016.10.12 |
---|---|
[오라클] DB 테이블 정의서 작성을 위해 데이터를 뽑아 보자. (0) | 2013.02.25 |
오라클의 스케쥴 작업 (Jobs) 및 프로시저(procedure) 살펴보기 - 1 (0) | 2012.12.13 |
[ORACLE] 오라클 버전을 확인하는 쿼리. (0) | 2012.12.03 |
mysql charset 설정 확인 및 변경(from mac) (0) | 2012.11.02 |