ODI調度

SELECT 
/*流程監控:ODI問題流程最新記錄(包括調度時間異常)【僅限調度活動的流程】*/
/*異常調度時間*/
[SCHOOL] SCHOOL,--學校
業務系統 OPER_SYS,--業務系統
調度名稱 PROCESS_NAME,--"調度名稱/流程名稱"
源對象 SRC_OBJ,--源對象
目標對象 TAG_OBJ,--目標對象
'['||LAGENT_NAME||']  '||調度週期 SCHEDULE,--調度週期
CASE WHEN 不規律調度配置 = '1' THEN '請人工檢查流程是否按照調度配置執行' ELSE '調度異常' END SESS_STATUS,--狀態
最新執行結束時間 LAST_SESS_END,--最新執行結束時間
TRUNC(未執行時長)||'天'||TRUNC((未執行時長-TRUNC(未執行時長))*24)||'小時'||TRUNC(((未執行時長-TRUNC(未執行時長))*24-TRUNC((未執行時長-TRUNC(未執行時長))*24))*60)||'分鐘 未運行新流程'||(CASE WHEN SESS_NAME IS NULL THEN ',從沒執行過。' WHEN SESS_STATUS = 'R' THEN ',正在運行。' ELSE '' END) ERR_MESSAGE,--報錯信息
TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') TIMEFLAG
FROM (
    SELECT DISTINCT 
    CASE WHEN XM2.PAR_I_FOLDER IS NOT NULL THEN (SELECT XM3.FOLDER_NAME FROM LY_ODI_GZK.SNP_FOLDER XM3 
        WHERE XM3.I_FOLDER=XM2.PAR_I_FOLDER)--三層根文件夾
        WHEN XM.PAR_I_FOLDER IS NOT NULL THEN XM2.FOLDER_NAME--兩層根文件夾
        ELSE XM.FOLDER_NAME END 業務系統,--一層根文件夾
    JK.I_POP 接口,
    CASE WHEN SCEN.I_PACKAGE IS NOT NULL THEN CXB.PACK_NAME WHEN SCEN.I_POP IS NOT NULL THEN JK.POP_NAME ELSE TRT.TRT_NAME END 調度名稱,
    YB.TABLE_NAME 源對象,
    JK.TABLE_NAME 目標對象,
case when agen.I_PLAN_AGENT is null then  '/' --無調度
  when agen.R_TIME||agen.s_type='1D' then agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/D'
        when agen.R_TIME||agen.s_type='1S' then agen.s_hour||':'||agen.s_minute||':'||agen.s_second
        when agen.R_TIME||agen.s_type='1W' then agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/W-'||agen.S_WEEK_DAY
        when agen.R_TIME||agen.s_type='1M' then agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/M-'||agen.S_MONTH_DAY
        WHEN AGEN.R_TIME||AGEN.S_TYPE='1H' THEN AGEN.S_HOUR||':'||AGEN.S_MINUTE||':'||AGEN.S_SECOND||'/H'
        else  agen.r_dur_interval||agen.r_interval_unit||(
          case when agen.s_type='S' then '('||agen.s_hour||':'||agen.s_minute||':'||agen.s_second||')'
            when agen.s_type='W' then ' & '||agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/W-'||agen.S_WEEK_DAY
              when agen.s_type='M' then ' & '||agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/M-'||agen.S_MONTH_DAY
                WHEN agen.s_type='D' then ' & '||agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/D'
                  WHEN agen.s_type='Y' then ' & '||agen.S_MONTH||'.'||agen.S_DAY||' '||agen.s_hour||':'||agen.s_minute||':'||agen.s_second||'/Y'
                    else ' & '||agen.s_type end
          ) end 調度週期,
    TO_CHAR((CASE WHEN SESS.SESS_STATUS IN ('W','R') THEN SESS.LAST_DATE ELSE SESS.SESS_END END),'yyyy-mm-dd hh24:mm:ss') 最新執行結束時間,
  SYSDATE - (CASE WHEN SESS.SESS_NAME IS NULL THEN (SELECT MIN(T.FIRST_DATE) FROM LY_ODI_GZK.SNP_SESSION T) ELSE SESS.FIRST_DATE END) 未執行時長,
  CASE WHEN SESS.SESS_NO IS NULL THEN (SYSDATE - (SELECT MIN(FIRST_DATE) FROM LY_ODI_GZK.SNP_SESSION))*24*60
  WHEN SESS.SESS_END IS NULL THEN (SYSDATE - SESS.LAST_DATE)*24*60 ELSE
  (CASE WHEN AGEN.S_TYPE = 'D' AND (SYSDATE - SESS.SESS_END)>=1 THEN (SYSDATE - TO_DATE(AGEN.S_YEAR||'-'||AGEN.S_MONTH||'-'||AGEN.S_DAY||' '||AGEN.S_HOUR||':'||AGEN.S_MINUTE||':'||AGEN.S_SECOND,'YYYY-MM-DD HH24:MI:SS'))+(SYSDATE - SESS.SESS_END - 1)*24*60
  WHEN AGEN.R_TIME = '0' THEN (
    CASE WHEN AGEN.R_INTERVAL_UNIT = 'H' THEN (SYSDATE - SESS.LAST_DATE)*24*60-AGEN.R_DUR_INTERVAL*60
      WHEN AGEN.R_INTERVAL_UNIT = 'M' THEN (SYSDATE - SESS.LAST_DATE)*24*60-AGEN.R_DUR_INTERVAL
         WHEN AGEN.R_INTERVAL_UNIT = 'S' THEN (SYSDATE - SESS.LAST_DATE)*24*60-AGEN.R_DUR_INTERVAL/60
           ELSE -1 END)
  ELSE -1 END) END 超時分鐘數R,
  SESS.SESS_NAME,
  SESS.SESS_STATUS,
  AGEN.LAGENT_NAME,
  CASE WHEN AGEN.S_TYPE IN ('W','M','Y') THEN '1' ELSE '0' END 不規律調度配置
  FROM LY_ODI_GZK.SNP_SCEN SCEN
  INNER JOIN (SELECT * FROM LY_ODI_GZK.SNP_PLAN_AGENT WHERE STAT_PLAN = 'E') AGEN ON UPPER(AGEN.SCEN_NAME||AGEN.SCEN_VERSION) = UPPER(SCEN.SCEN_NAME||SCEN.SCEN_VERSION)
  LEFT JOIN (SELECT * FROM LY_ODI_GZK.SNP_SESSION WHERE SCEN_NAME IS NOT NULL AND MASTER_AGENT_NAME IS NOT NULL
    AND SESS_NO IN (SELECT SESS_NO FROM (SELECT SESS_NO,ROW_NUMBER() OVER(PARTITION BY SESS_NAME, SCEN_VERSION ORDER BY LAST_DATE DESC) RAWNUM FROM LY_ODI_GZK.SNP_SESSION ) WHERE RAWNUM = 1)
    ) SESS ON UPPER(SESS.SCEN_NAME||SESS.SCEN_VERSION) = UPPER(SCEN.SCEN_NAME||SCEN.SCEN_VERSION)
  LEFT JOIN LY_ODI_GZK.SNP_PACKAGE CXB ON SCEN.I_PACKAGE = CXB.I_PACKAGE
  LEFT JOIN LY_ODI_GZK.SNP_POP JK ON SCEN.I_POP = JK.I_POP
  LEFT JOIN LY_ODI_GZK.SNP_TRT TRT ON SCEN.I_TRT = TRT.I_TRT
  LEFT JOIN LY_ODI_GZK.SNP_FOLDER XM ON COALESCE(JK.I_FOLDER,CXB.I_FOLDER,TRT.I_FOLDER) = XM.I_FOLDER
  LEFT JOIN LY_ODI_GZK.SNP_FOLDER XM2 ON XM.PAR_I_FOLDER = XM2.I_FOLDER
  LEFT JOIN LY_ODI_GZK.SNP_SOURCE_TAB YB ON YB.I_DATA_SET = JK.I_POP
)WHERE 超時分鐘數R-30>0 OR 不規律調度配置 = '1'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章