본문 바로가기

ETL Tools/Oracle Data Integrator

ODI ETL JOB LOG 재처리 자동화 2.0

재처리 자동화 로직

목적 : 서버가 다운되던지 예상치 못한 작업 지연 발생시 로그테이블을두고 데이터 적재시간을 관리하여 지연 재처리를 자동화 하도록 구현한다.

ETL_JOB_LOG V.2.0

로직 LOGIC



DESCRIPTION

 

1. 데이터 추출 범위 설정

소스테이블에서 가져올 데이터의 기간 구간을 설정 (기준 : 1)

EX ) 1 = 1, 1시간 = 1/24, 30 = 1/48




2. 데이터 추출 시작 시간 설정

소스테이블에서 데이터를 가져올 추출 시작시간을 설정

ETL JOB LOG에 관리되는 테이블에서 마지막 추출 시간을 가져오는방식

해당 JOB의 로그가 발생되지 않은 상태에서는 현재시간을 가져오도록구현( 변경 가능 )

* 최초 시작시간을정확한 시간에 가져오고 싶을 경우

  - 데이터를가라로 삽입하여 시작


3. 데이터 추출 종료 시간 설정

소스테이블에서 데이터를 가져올 추출 종료시간을 설정

l  시작시간 + 추출 범위 = 종료 시간

 

4. 현재 작업 상황 변수에 저장

작업 상태 분류

-       R : 현재 같은 이름을 가진 작업이 이미 돌고 있는 상태 -> 작업을 하지 않고 바로 종료

-       S : 지연 없이 정상적으로 작업이 진행하고 있는 상태

-       U : 지연이 발생하여 현재 돌 작업이 스케쥴링 예상 시간 보다 예전 데이터를 처리해야 하는 상태 -> 작업 후 지연 시간이 없을 때까지 재 작업

-       Q : 예상치 못한 상황 발생 시 -> 발생시 운영자가 상태 파악 후 조치

 

l  ODI WORK REPOSITORY에 저장된 LOG를 확인하여 이중 작업을 방지함.

l  지연 상황 파악 : 현재 시간과 작업 종료시간을 비교



5. 상태 저장 변수 확인 이중 작업 진행 여부 확인

이중 작업 상태만 파악

-       이중 작업 시: 작업 진행 종료

-       아닐 시: 작업 진행



6. 실 작업 진행

 

7. 로그 생성

작업이 정상적으로 종료되든 비정상적으로 오류가 발생하고 종료를 하든 무조건 로그를 발생하도록 구현

 

로그테이블은 DB에 테이블 형태로 관리한다.

 

테이블 생성 스크립트 :



위의 INSERT 문은 정상적으로 종료하였을 경우의 쿼리 문이다.

TASK_RST ( task result ) 컬럼에 Y를 삽입.

오류가 발생했을 경우는 N을 삽입하여 구분한다.

 

l  정확한 작업상황을 운영자가 OPERATOR를 통해서도 확인 가능하게 하기 위해 고의로 오류를 발생하는 문을 만든다.

 

8. 상태 저장 변수 확인 - 로그를 삽입한 후 재처리 여부 확인 및 진행

 5번 과 같은 작업을 진행.

l  상태 변수 값이 U일 경우 재처리 필요로 보고 작업을 재진행한다.

l  S일 경우에는 정상적 종료.

 

이상 재처리 로직 설명 끝.