--ODI Job log Table create script (Ver 1.2)
--Date. 2012.04.17
--Owner. WideTNS Co, Ltd.
--Created by Cheon Jeonghyeon
/* 버전 변경사항
1. 작업 건수 추가 ( INSERT, UPDATE, DELETE, ERROR )
2. PK 추가 (세션 번호, 작업 시작 시간)
* 이유: 한 세션에서 작업을 일회성이 아닌 LOOPING 작업을 통해 진행하여야 하고 그 사항을 기록하여 추적하고 싶을 경우가 발생하여, 세션번호 하나만 가지고는 데이터를 판별하는 것이 불가능하여 작업 시작 시간을 추가함. 물론 이 추가 작업으로 인해 데이터 무결성에 문제가 발생할 수 있으므로 이후 PK 변경이 필요할 듯 보인다.
*/
-- Generated on 2012/04/17 10:27:58
CREATE TABLE XXX_ODI_REPO.ETL_JOB_LOG
(
SESS_NO NUMBER (19) NOT NULL,
SESS_NAME VARCHAR2 (436 CHAR) NOT NULL,
SCEN_NAME VARCHAR2 (400 CHAR),
TASK_BEG VARCHAR2 (14) NOT NULL,
TASK_END VARCHAR2 (14) NOT NULL,
TASK_RAN VARCHAR2 (10) NOT NULL,
TASK_STATUS VARCHAR2 (10),
TASK_RST CHAR (1) DEFAULT 'N',
NB_INS NUMBER (10),
NB_UPD NUMBER (10),
NB_DEL NUMBER (10),
NB_ERR NUMBER (10),
ERR_MSG VARCHAR2 (4000),
LD_OP_DTM DATE DEFAULT sysdate,
UPD_LD_OP_DTM DATE
);
COMMENT ON TABLE HTS_ODI_REPO.ODI_TASK_LOG IS 'Oracle Data Integrator task log' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.ERR_MSG IS '오류 메세지' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.LD_OP_DTM IS '기록일시' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.NB_DEL IS '이전 작업 삭제 건수' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.NB_ERR IS '이전 작업 오류 건수' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.NB_INS IS '이전 작업 삽입 건수' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.NB_UPD IS '이전 작업 갱신 건수' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.SCEN_NAME IS '시나리오 명, if exists on ODI' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.SESS_NAME IS '세션 명 on ODI' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.SESS_NO IS '세션 번호 on ODI' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.TASK_BEG IS '데이터 추출 범위 일시(Start)' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.TASK_END IS '데이터 추출 범위 일시(Stop)' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.TASK_RAN IS '배치 주기(데이터 추출 범위)' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.TASK_RST IS '작업 결과' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.TASK_STATUS IS '작업 수행 상태' ;
COMMENT ON COLUMN HTS_ODI_REPO.ODI_TASK_LOG.UPD_LD_OP_DTM IS '갱신일시' ;
CREATE UNIQUE INDEX HTS_ODI_REPO.PK_ODI_TASK_LOG
ON HTS_ODI_REPO.ODI_TASK_LOG
(
SESS_NO ASC,
TASK_BEG ASC
) ;
CREATE INDEX HTS_ODI_REPO.INX1_ODI_TASK_LOG
ON HTS_ODI_REPO.ODI_TASK_LOG
(
SESS_NAME ASC,
TASK_RST ASC
) ;
-- INSERT LOG QUERY
/* 내부에서 사용하는 ODI 변수의 내용은 이전 버전과 다르지 않다.*/
-- STEP1: INSERT LOG
INSERT INTO HTS_ODI_REPO.ODI_TASK_LOG
(
SESS_NO ,
SESS_NAME ,
SCEN_NAME ,
TASK_BEG ,
TASK_END ,
TASK_RAN ,
TASK_STATUS ,
TASK_RST ,
NB_INS,
NB_UPD,
NB_DEL,
NB_ERR,
ERR_MSG ,
LD_OP_DTM
)
SELECT
'<%=snpRef.getSession("SESS_NO")%>',
'<%=snpRef.getSession("SESS_NAME")%>',
'<%=snpRef.getSession("SCEN_NAME")%>',
'#V_TASK_BEG',
'#V_TASK_END',
#V_TASK_RAN,
'#V_TASK_STATUS',
'<%=odiRef.getPrevStepLog("INSERT_COUNT")%>',
'<%=odiRef.getPrevStepLog("DELETE_COUNT")%>',
'<%=odiRef.getPrevStepLog("UPDATE_COUNT")%>',
'<%=odiRef.getPrevStepLog("ERROR_COUNT")%>',
DECODE('<%=odiRef.getPrevStepLog("MESSAGE")%>','','Y','N'),
'<%=odiRef.getPrevStepLog("MESSAGE")%>',
SYSDATE
FROM DUAL
-- STEP 2: ERROR MESSAGE
/* 작업에서 실제 오류가 발생하였을 경우 로그상에도 오류를 발생시키고 종료하기 위해 작업 추가*/
<%=odiRef.getPrevStepLog("MESSAGE")%>
이전 버전
--Date. 2012.03.12
--Owner. WideTNS Co, Ltd.
--Created by Cheon Jeonghyeon
/*#V_INPUT_BEG
변수 설명: 사용자가 수동으로 작업을 수행시킬 때 사용하는 변수
사용 방법: 수동 실행시 yyyymmddhh24miss 형식의 date 값을 넣어 수행한다.*/
/*#V_INPUT_END
변수 설명: 사용자가 수동으로 작업을 수행시킬 때 사용하는 변수
사용 방법: 수동 실행시 yyyymmddhh24miss 형식의 date 값을 넣어 수행한다.*/
/*#V_TASK_BEG
변수 설명: 스케쥴링 데이터 추출 기준 일시 (Start)
* 로그에서 Max(end)를 가져온다ㅏ.
* Input 일시가 있을 경우 그 값을 사용할 것 (로그를 어떻게 남기느냐??)
* ?스케쥴링 종료 일자가 input '정상' 종료일자보다 과거일 경우 input 종료 일자를 사용한다. */
SELECT MAX( EJL.TASK_END)
FROM ODI_REPO.odi_TASK_LOG ETL
WHERE SCEN_NAME = '<%=snpRef.getSession("SESS_NAME")%>'
AND BATCH_YN = 'Y'
AND TASK_RST = 'Y'
;
/*#V_TASK_END
변수 설명: 스케쥴링 데이터 추출 기준 일시 (Start)
* 배치 기준에 따른다. (일 배치: trunc(sysdate))
* 기존의 재처리시 looping 작업은 수행하지 않는다.(WHY? 데이터가 많지 않기 때문에..) */
SELECT RPAD(TO_CHAR(SYSDATE,DECODE(#V_TASK_RAN,1,'YYYYMMDD', 'YYYYMMDDHH24MISS')),14,'0')
FROM DUAL;
/*#V_TASK_RAN
변수 설명: 배치 주기(1 DAY=1, 1HOUR = 1/24...)
* 실 의미는 데이터 추출 범위로 주로 배치주기와 같은 값을 갖는다. */
/*#V_TASK_STATUS
변수 설명: 작업 상태
- Running : 같은 세션명의 작업이 진행중인 경우 -> 종로
- Great : 정상 진행
- Delayed : 지연 진행
- Overflow : 수행 구간 Overflow */
--Date. 2012.03.08
--Owner. WideTNS Co, Ltd.
--Created by Cheon Jeonghyeon
CREATE TABLE DEV1_ODI_REPO.ODI_TASK_LOG