Oracle Data Integrator (Odi) Best Practices
Oracle Data Integrator (Odi) Best Practices
[email protected]
http://gurcanorhan.wordpress.com
@gurcan_orhan
http://tr.linkedin.com/in/gurcanorhan
WHO AM I ? BlackSoft Consulting
SELECT *
FROM odiwd.snp_session sess,
odiwd.snp_step_log step,
odiwd.snp_sess_task sess_task,
odiwd.snp_exp_txt exp_txt
WHERE sess.sess_no = step.sess_no
AND sess.sess_no = sess_task.sess_no
AND step.nno = sess_task.nno
AND step.i_txt_step_mess = exp_txt.i_txt
AND step.step_status = 'E'
AND exp_txt.txt_ord = 0
AND sess.sess_no = <%=odiRef.getSession("SESS_NO")%>
SNP_SCEN_REPORT ARC_SNP_SCEN_REPORT
SNP_SESS_STEP ARC_SNP_SESS_STEP
SNP_SESS_TASK ARC_SNP_SESS_TASK
SNP_SESS_TASK_LOG ARC_SNP_SESS_TASK_LOG
Create these tables (without
SNP_SESS_TXT_LOG referential integrity, ARC_SNP_SESS_TXT_LOG
SNP_SESSION
constraints, indexes, etc.) ARC_SNP_SESSION
with a suffix or prefix in a
SNP_STEP_LOG different schema. ARC_SNP_STEP_LOG
SNP_STEP_REPORT ARC_SNP_STEP_REPORT
SNP_TASK_TXT ARC_SNP_TASK_TXT
SNP_VAR_DATA ARC_SNP_VAR_DATA
SNP_VAR_SESS ARC_SNP_VAR_SESS
ARCHIVING ODI LOGS, REVERSE BlackSoft Consulting
I_SNP_EXP_TXT
SNP_EXP_TXT ARC_SNP_EXP_TXT
I_SNP_SCEN_REPORT
SNP_SCEN_REPORT ARC_SNP_SCEN_REPORT
I_SNP_SESS_STEP
SNP_SESS_STEP ARC_SNP_SESS_STEP
SNP_SESSION
I_SNP_SESS_TASK
SNP_SESS_TASK ARC_SNP_SESS_TASK
SNP_SESS_STEP
SNP_SESSION
I_SNP_SESS_TASK_LOG
SNP_SESS_TASK_LOG ARC_SNP_SESS_TASK_LOG
SNP_STEP_LOG
SNP_SESS_STEP
SNP_SESSION
SNP_STEP_LOG.SESS_NO=SNP_SESS_STEP.SESS_NO AND
SNP_STEP_LOG.NNO=SNP_SESS_STEP.NNO
SNP_SESS_STEP.SESS_NO=SNP_SESSION.SESS_NO
ARCHIVING ODI LOGS, CREATE INTERFACES BlackSoft Consulting
I_SNP_SESS_TXT_LOG
SNP_SESS_TXT_LOG ARC_SNP_SESS_TXT_LOG
SNP_SESS_TASK_LOG
SNP_STEP_LOG
SNP_SESS_STEP
SNP_SESSION
SNP_SESS_TASK_LOG.NNO=SNP_STEP_LOG.NNO AND
SNP_SESS_TASK_LOG.SESS_NO=SNP_STEP_LOG.SESS_NO AND
SNP_SESS_TASK_LOG.NB_RUN=SNP_STEP_LOG.NB_RUN
SNP_STEP_LOG.SESS_NO=SNP_SESS_STEP.SESS_NO AND
SNP_STEP_LOG.NNO=SNP_SESS_STEP.NNO
SNP_SESS_STEP.SESS_NO=SNP_SESSION.SESS_NO
ARCHIVING ODI LOGS, CREATE INTERFACES BlackSoft Consulting
I_SNP_SESSION
SNP_SESSION ARC_SNP_SESSION
I_SNP_STEP_LOG
SNP_STEP_LOG ARC_SNP_STEP_LOG
SNP_SESS_STEP
SNP_SESSION
I_SNP_STEP_REPORT
SNP_STEP_REPORT ARC_SNP_STEP_REPORT
SNP_SCEN_REPORT
I_SNP_TASK_TXT
SNP_TASK_TXT ARC_SNP_TASK_TXT
SNP_SESS_TASK
SNP_SESS_STEP
SNP_SESSION
SNP_SESS_TASK.SESS_NO=SNP_SESS_STEP.SESS_NO AND
SNP_SESS_TASK.NNO=SNP_SESS_STEP.NNO
SNP_SESS_STEP.SESS_NO=SNP_SESSION.SESS_NO
ARCHIVING ODI LOGS, CREATE INTERFACES BlackSoft Consulting
I_SNP_VAR_DATA
SNP_VAR_DATA ARC_SNP_VAR_DATA
I_SNP_VAR_SESS
SNP_VAR_SESS ARC_SNP_VAR_SESS
Error Handler
Max. Number of Failed Child
Sessions = 1
Raise Error
(error refresh variable)
Mail body
(refresh variable) Send mail
AGENDA BlackSoft Consulting
HANDLING - IN ETL - DATA QUALITY BlackSoft Consulting
Step 5 : Send e-mail for each script, attach the appropriate file
and show how many rows are generated in this ERROR_CODE.
HANDLING - IN ETL - DATA QUALITY BlackSoft Consulting
Check ERROR_CODE_COUNT>0
Step 5 : Send e-mail for each script, attach the appropriate file
and show how many rows are generated in this ERROR_CODE.
v Mail Server : #V_MAIL_SERVER_IP
v From : This is static, user that you are sending mail.
v TO : #V_ERROR_MAIL_TO (need to be refreshed in the beginning of
your ETL or current package)
v CC : #V_ERROR_MAIL_CC (need to be refreshed in the beginning of
your ETL or current package)
v BCC : #V_ERROR_MAIL_BCC (need to be refreshed in the beginning of
your ETL or current package)
v Subject : There are #V_MY_ERROR_COUNT errors exist in your system
(Error Code = #V_MY_ERROR_CODE)
v Attachment : /data/my_errors/MY_Error_#V_MY_ERROR_CODE.txt
(will represent as /data/my_errors/MY_Error_1.txt initially, then will attach
regarding file in the loop, every step will attach its own script file)
v Message Body : #V_MY_ERROR_DESC
AGENDA BlackSoft Consulting
FILE2TABLE… SUMMARY (F2T) BlackSoft Consulting
_ logs
nvoice
/data/i
lo gs/
a ta /i n voice_
/d
d
rejecte
e_log s/log
i n v o i c
/data/
FILE2TABLE… PREPARE IKM (STEP 2) BlackSoft Consulting
Truncate : No
Select Hint : /*+ PARALLEL(4) */
Insert Hint : /*+ APPEND PARALLEL(4) NOLOGGING */
F2T… PREPARE ODI VARIABLES (STEP 8) BlackSoft Consulting
INTERFACE
From:Ext_Table
FILE_ID To:DB.Table
Refresh Variable
UPDATE_PROCESSED
ODI Procedure
SOURCE A
Staging
TARGET
(C$%-src A) + (C$-srcB)
+
(I$%TARGET)
ODI Agent
ODI
SOURCE B
Agent
BONUS – ORACLE 2 ORACLE LOAD BlackSoft Consulting
TARGET
+
ODI Agent
SOURCE A
TARGET
External Table
+
ODI Agent
ODI
SOURCE B
Agent
…FINAL WORDS… BlackSoft Consulting
[email protected]
http://gurcanorhan.wordpress.com
@gurcan_orhan
http://tr.linkedin.com/in/gurcanorhan