6. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 8/17/2018 9:15:24 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

6.1 Files compared

# Location File Last Modified
1 ADR FY8 Q3 CIF submission.zip\ADR FY8 Q3 CIF submission\DDL\ADRMGT procedure.sql Thu Mar 30 20:07:36 2017 UTC
2 ADR FY8 Q3 CIF submission.zip\ADR FY8 Q3 CIF submission\DDL\ADRMGT procedure.sql Thu Aug 16 18:07:12 2018 UTC

6.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 1512
Changed 1 2
Inserted 0 0
Removed 0 0

6.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

6.4 Active regular expressions

No regular expressions were active.

6.5 Comparison detail

  1   DROP PROCE DURE ADRMG T.JOB_PROC ESS_LOG_SP ;
  2  
  3   CREATE OR  REPLACE PR OCEDURE AD RMGT.Job_P rocess_Log _Sp
  4     (PC_job_ name
  5        IN      ADRMGT.J ob_Process _Logs.Job_ name%TYPE
  6          DEF AULT 'UNKN OWN',
  7      PD_job_ log_date
  8        IN      ADRMGT.J ob_Process _Logs.Job_ log_date%T YPE
  9          DEF AULT SYSDA TE,
  10      PC_job_ status
  11        IN      ADRMGT.J ob_Process _Logs.Job_ status%TYP E
  12          DEF AULT NULL,
  13      PC_job_ log_messag e
  14        IN      ADRMGT.J ob_Process _Logs.Job_ log_messag e%TYPE
  15          DEF AULT NULL,
  16      PD_date 1
  17        IN      ADRMGT.J ob_Process _Logs.Date 1%TYPE
  18          DEF AULT NULL,
  19      PD_date 2
  20        IN      ADRMGT.J ob_Process _Logs.Date 2%TYPE
  21          DEF AULT NULL,
  22      PD_date 3
  23        IN      ADRMGT.J ob_Process _Logs.Date 3%TYPE
  24          DEF AULT NULL,
  25      PN_nume ric1
  26        IN      ADRMGT.J ob_Process _Logs.Nume ric1%TYPE
  27          DEF AULT NULL,
  28      PN_nume ric2
  29        IN      ADRMGT.J ob_Process _Logs.Nume ric2%TYPE
  30          DEF AULT NULL,
  31      PN_nume ric3
  32        IN      ADRMGT.J ob_Process _Logs.Nume ric3%TYPE
  33          DEF AULT NULL,
  34      PC_text 1
  35        IN      ADRMGT.J ob_Process _Logs.Text 1%TYPE
  36          DEF AULT NULL,
  37      PC_text 2
  38        IN      ADRMGT.J ob_Process _Logs.Text 2%TYPE
  39          DEF AULT NULL,
  40      PC_text 3
  41        IN      ADRMGT.J ob_Process _Logs.Text 3%TYPE
  42          DEF AULT NULL
  43   )
  44  
  45   IS
  46  
  47   /*
  48   REM ###### ########## ########## ########## ########## ########## ########## #########
  49   REM #  Des cription:  Create ADR MGT.Job_Pr ocess_Log_ Sp stored  procedure.
  50   REM #
  51   REM #                 This proce dure will  be used to  write job  processin g logs
  52   REM #                 from vario us scripts  and DBMS_ JOB jobs.
  53   REM #
  54   REM #   Us age:             Call ed by run_ wrapper.sq l
  55   REM #   In put Parame ters:
  56   REM #      1) Job_nam e                         VARCHA R2(60)   ( REQUIRED)
  57   REM #         - Uniqu e Name for  each job  using this  table
  58   REM #      2) Job_log _date                     DATE            ( REQUIRED)
  59   REM #         - Date/ time of lo g write re quest
  60   REM #      3) Job_sta tus                       VARCHA R2(60)   ( OPTIONAL)
  61   REM #         - Curre nt status  of the job
  62   REM #      4) Job_log _message                  VARCHA R2(2000) ( OPTIONAL)
  63   REM #         - User  defined jo b message
  64   REM #      5) Date1                             DATE            ( OPTIONAL)
  65   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  66   REM #      6) Date2                             DATE            ( OPTIONAL)
  67   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  68   REM #      7) Date3                             DATE            ( OPTIONAL)
  69   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  70   REM #      8) Numeric 1                         NUMBER          ( OPTIONAL)
  71   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  72   REM #      9) Numeric 2                         NUMBER          ( OPTIONAL)
  73   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  74   REM #    1 0) Numeric 3                         NUMBER          ( OPTIONAL)
  75   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  76   REM #    1 1) Text1                             VARCHA R2(255)  ( OPTIONAL)
  77   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  78   REM #    1 2) Text2                             VARCHA R2(255)  ( OPTIONAL)
  79   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  80   REM #    1 3) Text3                             VARCHA R2(255)  ( OPTIONAL)
  81   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  82   REM #   Ou tput:
  83   REM #      1) Rows wi ll be inse rted into  the ADRMGT .Job_Proce ss_Logs ta ble
  84   REM #
  85   REM ###### ########## ########## ########## ########## ########## ########## #########
  86   REM # Chan ge History
  87   REM #
  88   REM # DATE        Use r Name          DESCR IPTION
  89   REM # ---- ------ --- ---------- ---- ----- ---------- ---------- ---------- --------
  90   REM # 04/1 2/2010 Cra ig Wood         Creat ed script
  91   REM #
  92   REM ###### ########## ########## ########## ########## ########## ########## #########
  93   */
  94  
  95     VD_log_d ate                            D ATE;
  96  
  97     PRAGMA A UTONOMOUS_ TRANSACTIO N;
  98  
  99   BEGIN
  100  
  101     INSERT
  102     INTO       ADRMGT.J ob_Process _Logs
  103                (Job_pro cess_logs_ id,
  104                 Job_nam e,
  105                 Job_log _date,
  106                 Job_sta tus,
  107                 Job_log _message,
  108                 Date1,
  109                 Date2,
  110                 Date3,
  111                 Numeric 1,
  112                 Numeric 2,
  113                 Numeric 3,
  114                 Text1,
  115                 Text2,
  116                 Text3,
  117                 Record_ created_da te
  118                )
  119     VALUES     (ADRMGT. Job_proces s_logs_id_ s.NEXTVAL,
  120                 PC_job_ name ,
  121                 PD_job_ log_date,
  122                 PC_job_ status,
  123                 PC_job_ log_messag e,
  124                 PD_date 1,
  125                 PD_date 2,
  126                 PD_date 3,
  127                 PN_nume ric1,
  128                 PN_nume ric2,
  129                 PN_nume ric3,
  130                 PC_text 1,
  131                 PC_text 2,
  132                 PC_text 3,
  133                 SYSDATE
  134                );
  135  
  136     COMMIT;
  137  
  138   EXCEPTION
  139  
  140     WHEN OTH ERS THEN
  141  
  142       VD_log _date := S YSDATE;
  143       ADRMGT .Job_Proce ss_Err_Sp( 'ADRMGT.Jo b_Process_ Log_Sp',
  144                                    VD_log_dat e,
  145                                    SUBSTR('ER ROR! Unabl e to inser t into ADR _EXTRACT_P ROCESS_LOG  table.',1 ,60),
  146                                    SUBSTR(SQL ERRM,1,200 0)
  147                                  ) ;
  148  
  149   END Job_Pr ocess_Log_ Sp;
  150   /
  151  
  152  
  153   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_LOG_ SP TO ADR;
  154  
  155   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_LOG_ SP TO ADRM GT_APP_RW;
  156  
  157   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_LOG_ SP TO PSIM ;
  158   DROP PROCE DURE ADRMG T.JOB_PROC ESS_ERR_SP ;
  159  
  160   CREATE OR  REPLACE PR OCEDURE AD RMGT.Job_P rocess_Err _Sp
  161     (PC_job_ name
  162        IN      ADRMGT.J ob_Process _Errs.Job_ name%TYPE
  163          DEF AULT 'UNKN OWN',
  164      PD_job_ error_date
  165        IN      ADRMGT.J ob_Process _Errs.Job_ error_date %TYPE
  166          DEF AULT SYSDA TE,
  167      PC_job_ error_code
  168        IN      ADRMGT.J ob_Process _Errs.Job_ error_code %TYPE
  169          DEF AULT NULL,
  170      PC_job_ error_mess age
  171        IN      ADRMGT.J ob_Process _Errs.Job_ error_mess age%TYPE
  172          DEF AULT NULL,
  173      PD_date 1
  174        IN      ADRMGT.J ob_Process _Errs.Date 1%TYPE
  175          DEF AULT NULL,
  176      PD_date 2
  177        IN      ADRMGT.J ob_Process _Errs.Date 2%TYPE
  178          DEF AULT NULL,
  179      PD_date 3
  180        IN      ADRMGT.J ob_Process _Errs.Date 3%TYPE
  181          DEF AULT NULL,
  182      PN_nume ric1
  183        IN      ADRMGT.J ob_Process _Errs.Nume ric1%TYPE
  184          DEF AULT NULL,
  185      PN_nume ric2
  186        IN      ADRMGT.J ob_Process _Errs.Nume ric2%TYPE
  187          DEF AULT NULL,
  188      PN_nume ric3
  189        IN      ADRMGT.J ob_Process _Errs.Nume ric3%TYPE
  190          DEF AULT NULL,
  191      PC_text 1
  192        IN      ADRMGT.J ob_Process _Errs.Text 1%TYPE
  193          DEF AULT NULL,
  194      PC_text 2
  195        IN      ADRMGT.J ob_Process _Errs.Text 2%TYPE
  196          DEF AULT NULL,
  197      PC_text 3
  198        IN      ADRMGT.J ob_Process _Errs.Text 3%TYPE
  199          DEF AULT NULL
  200   )
  201  
  202   IS
  203  
  204   /*
  205   REM ###### ########## ########## ########## ########## ########## ########## #########
  206   REM #  Des cription:  Create ADR MGT.Job_Pr ocess_Err_ Sp stored  procedure.
  207   REM #
  208   REM #                 This proce dure will  be used to  write job  processin g logs
  209   REM #                 from vario us scripts  and DBMS_ JOB jobs.
  210   REM #
  211   REM #   Us age:             Call ed by run_ wrapper.sq l
  212   REM #   In put Parame ters:
  213   REM #      1) Job_nam e                         VARCHA R2(60)   ( REQUIRED)
  214   REM #         - Uniqu e Name for  each job  using this  table
  215   REM #      2) Job_err or_date                   DATE            ( REQUIRED)
  216   REM #         - Date/ time of lo g write re quest
  217   REM #      3) Job_err or_code                   VARCHA R2(60)   ( OPTIONAL)
  218   REM #         - Error  code from  the job
  219   REM #      4) Job_err or_message                VARCHA R2(2000) ( OPTIONAL)
  220   REM #         - User  defined er ror messag e
  221   REM #      5) Date1                             DATE            ( OPTIONAL)
  222   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  223   REM #      6) Date2                             DATE            ( OPTIONAL)
  224   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  225   REM #      7) Date3                             DATE            ( OPTIONAL)
  226   REM #         - Gener ic date fi eld for lo gging user  defined i nformation
  227   REM #      8) Numeric 1                         NUMBER          ( OPTIONAL)
  228   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  229   REM #      9) Numeric 2                         NUMBER          ( OPTIONAL)
  230   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  231   REM #    1 0) Numeric 3                         NUMBER          ( OPTIONAL)
  232   REM #         - Gener ic numeric  field for  logging u ser define d informat ion
  233   REM #    1 1) Text1                             VARCHA R2(255)  ( OPTIONAL)
  234   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  235   REM #    1 2) Text2                             VARCHA R2(255)  ( OPTIONAL)
  236   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  237   REM #    1 3) Text3                             VARCHA R2(255)  ( OPTIONAL)
  238   REM #         - Gener ic text fi eld for lo gging user  defined i nformation
  239   REM #   Ou tput:
  240   REM #      1) Rows wi ll be inse rted into  the ADRMGT .Job_Proce ss_Errs ta ble
  241   REM #
  242   REM ###### ########## ########## ########## ########## ########## ########## #########
  243   REM # Chan ge History
  244   REM #
  245   REM # DATE        Use r Name          DESCR IPTION
  246   REM # ---- ------ --- ---------- ---- ----- ---------- ---------- ---------- --------
  247   REM # 04/1 2/2010 Cra ig Wood         Creat ed script
  248   REM #
  249   REM ###### ########## ########## ########## ########## ########## ########## #########
  250   */
  251  
  252     PRAGMA A UTONOMOUS_ TRANSACTIO N;
  253  
  254   BEGIN
  255  
  256     INSERT
  257     INTO       ADRMGT.J ob_Process _Errs
  258                (Job_pro cess_errs_ id,
  259                 Job_nam e,
  260                 Job_err or_date,
  261                 Job_err or_code,
  262                 Job_err or_message ,
  263                 Date1,
  264                 Date2,
  265                 Date3,
  266                 Numeric 1,
  267                 Numeric 2,
  268                 Numeric 3,
  269                 Text1,
  270                 Text2,
  271                 Text3,
  272                 Record_ created_da te
  273                )
  274     VALUES     (ADRMGT. Job_proces s_errs_id_ s.NEXTVAL,
  275                 PC_job_ name ,
  276                 PD_job_ error_date ,
  277                 PC_job_ error_code ,
  278                 PC_job_ error_mess age,
  279                 PD_date 1,
  280                 PD_date 2,
  281                 PD_date 3,
  282                 PN_nume ric1,
  283                 PN_nume ric2,
  284                 PN_nume ric3,
  285                 PC_text 1,
  286                 PC_text 2,
  287                 PC_text 3,
  288                 SYSDATE
  289                );
  290  
  291     COMMIT;
  292  
  293   EXCEPTION
  294  
  295     WHEN OTH ERS THEN
  296  
  297       NULL;
  298  
  299   END Job_Pr ocess_Err_ Sp;
  300   /
  301  
  302  
  303   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_ERR_ SP TO ADR;
  304  
  305   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_ERR_ SP TO ADRF ILE;
  306  
  307   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_ERR_ SP TO ADRM GT_APP_RW;
  308  
  309   GRANT EXEC UTE ON ADR MGT.JOB_PR OCESS_ERR_ SP TO PSIM ;
  310   DROP PROCE DURE ADRMG T.JOB_MONI TOR_SP;
  311  
  312   CREATE OR  REPLACE PR OCEDURE AD RMGT.JOB_M ONITOR_SP
  313     (
  314      P_COL_L IST            IN VAR CHAR2,     --REQUIRED
  315      P_TAB_N AME            IN VAR CHAR2,     --REQUIRED
  316      P_LIMIT _DATE_COLU MN  IN VAR CHAR2,     --REQUIRED
  317      P_BEG_D ATE            IN DAT E DEFAULT  SYSDATE,
  318      P_WHERE _LIST          IN VAR CHAR2,
  319      P_ORDER _BY            IN VAR CHAR2,     --REQUIRED
  320      P_EMAIL _GROUP         IN VAR CHAR2 DEFA ULT 'ADR_D BA')
  321  
  322   AS
  323     /* ===== ========== ========== ========== ========== ========== ========== =========  */
  324     /* Descr iption: CC R 1652: AD R JOB Moni toring                                      */
  325     /*                                                                                    */
  326     /* This  store proc edure is t o monitor  2 tables J OB_PROCESS _LOGS and             */
  327     /* JOB_P ROCESS_ERR S and send  out notif ications v ia utl_mai l to ADR_D BA group   */
  328     /* The o utput layo ut will li mit up to  30 rows di splay on e mail. Ther e are 7    */
  329     /* passi ng argumen ts:                                                               */
  330     /*                                                                                    */
  331     /* P_COL _LIST:  li sts of col umns to be  displayed  in the bo dy.  The f irst       */
  332     /*           column  must be t he job nam e.  Limit  up to 5 co lumns.                */
  333     /*                                                                                    */
  334     /* P_TAB _NAME:  ta ble to be  monitored.                                             */
  335     /*                                                                                    */
  336     /* P_LIM IT_DATE_CO LUMN: Emte r column t o be limit ed by quer y.  For ex ample      */
  337     /*                                                                                    */
  338     /* P_BEG _DATE: Mon itoring da te and goe s back to  xxx days o f one of t he inputs  */
  339     /*                                                                                    */
  340     /* P_WHE RE_LIST:li sts where  clause con ditions.                                    */
  341     /*                                                                                    */
  342     /* P_ORD ER_BY:  li st a colum n to be so rted by.   Limit one  column.               */
  343     /*                                                                                    */
  344     /* P_EMA IL_GROUP:  email grou p name whi ch is foun d in ADR_U SER_CONTAC T          */
  345     /*                                                                                    */
  346     /* VN_ma x_num_days _monitored : look up  from adr_p arameter t able                  */
  347     /*                                                                                    */
  348     /* VN_ma x_rec_disp lay: Look  up from ad r_paramete r table. L imit up to  30 rows   */
  349     /*                                                                                    */
  350     /* Sampl e code:                                                                      */
  351     /* DRMGT .JOB_MONIT OR_SP( P_C OL_LIST =>  'JOB_NAME , JOB_ERRO R_DATE,               */
  352     /*    JO B_ERROR_CO DE, JOB_ER ROR_MESSAG E',                                         */
  353     /*    P_ TAB_NAME    => 'ADRMG T.JOB_PROC ESS_ERRS',                                  */
  354     /*    P_ LIMIT_DATE _COLUMN    => 'JOB_ER ROR_DATE',                                  */
  355     /*    P_ BEG_DATE    => SYSDAT E,  P_WHER E_LIST =>  NULL,                            */
  356     /*    P_ ORDER_BY    => 'JOB_P ROCESS_ERR S_ID',                                      */
  357     /*    P_ EMAIL_GROU P=> 'ADR_D BA');                                                  */
  358     /*                                                                                    */
  359     /******* ********** ********** ********** ********** ********** ********** ********** */
  360     -- # Cha nge Histor y
  361     -- #
  362     -- # DAT E       Us er Name          DESC RIPTION
  363     -- # --- ------- -- ---------- ----- ---- ---------- ---------- ---------- ---------- -----
  364     -- # 06/ 26/2012 Ri chard Do         Crea ted - CCR  1652
  365     -- #
  366  
  367  
  368  
  369     -- VARIA BLES
  370  
  371     TYPE TAB LE_COL_TYP E IS TABLE  OF VARCHA R2(1000) I NDEX BY BI NARY_INTEG ER;
  372     VN_STR_L EN         NUMBER:= 1 00;
  373     VN_SEPAR ATOR       CONSTANT V ARCHAR2(3) := ' | ';
  374  
  375     VC_WHERE            VARCHAR2(3 200);
  376     LV_Str_L ist        VARCHAR2(5 00);
  377     LB_cnt              BINARY_INT EGER;
  378     LA_Tab_S tr         DBMS_UTILI TY.UNCL_AR RAY;
  379  
  380     LC_TMP              VARCHAR2(1 00);
  381     LC_err_s tr         VARCHAR2(3 2767);
  382     LC_str              LONG;
  383     l_row_cn t          BINARY_INT EGER := 0;
  384     LN_col_c ount       BINARY_INT EGER := 0;
  385  
  386     VC_log_s tep        VARCHAR2(5 00);
  387     lc_col1             TABLE_COL_ TYPE;
  388     lc_col2             TABLE_COL_ TYPE;
  389     lc_col3             TABLE_COL_ TYPE;
  390     lc_col4             TABLE_COL_ TYPE;
  391     lc_col5             TABLE_COL_ TYPE;
  392  
  393  
  394     VC_SELEC T1          VARCHAR2( 60):= 'SEL ECT * FROM  (';
  395     LC_WHERE _LIMIT      VARCHAR2( 2000);
  396     LN_MAX_R OWS_DISP    NUMBER :=  30;  --Th is number  limit numb er of rows  display o n the body  message
  397     VN_max_n um_days_mo nitored    NUMBER;
  398     VN_max_r ec_display              NUMBER;
  399  
  400  
  401     VC_SQLST MT          VARCHAR2( 5000);
  402  
  403     vMesg                LONG;
  404     vSubj                VARCHAR2( 800);
  405  
  406  
  407     VB_allow _rpt_inst         BOO LEAN := FA LSE;
  408     VB_error                  BOOL EAN := FAL SE;
  409     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  410     VB_updat e_row              BO OLEAN := F ALSE;
  411  
  412     VC_allow _rpt_inst          VA RCHAR2(5)  := NULL;
  413  
  414     VC_proce ss_duratio n       VA RCHAR2(25) ;
  415     VC_proce ss_name             V ARCHAR2(30 ) := 'ADRM GT.JOB_MON ITOR_SP';
  416  
  417  
  418     VN_Inst_ name              VAR CHAR2(60);
  419     VC_host_ name                V ARCHAR2(60 );
  420     VC_email _list              VA RCHAR2(300 );
  421  
  422  
  423   -- ******* ********** ********** ********** ********** ********** ********** *******
  424   -- *
  425   -- *  MAIN  PROCEDURE :
  426   -- *
  427   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  428   -- *
  429   -- ******* ********** ********** ********** ********** ********** ********** *******
  430  
  431   BEGIN
  432  
  433      VC_log_ step := 'G et instanc e name';
  434  
  435      SELECT  sys_contex t('USERENV ','INSTANC E_NAME'),  sys_contex t('USERENV ', 'SERVER _HOST')
  436      into VN _Inst_name , VC_host_ name
  437      FROM du al;
  438  
  439      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  440                                 PD _job_log_d ate => SYS DATE,
  441                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  442                                 PD _date1 =>  SYSDATE,
  443                                 PC _text1 =>  VC_log_ste p||' - Ini tiating AD R Monitori ng Job');
  444  
  445  
  446      LV_Str_ List  := P _COL_LIST;
  447  
  448      -- ==== ========== ========== ========== ========== ========== ========== ========== ====
  449      -- Obta in value m ax num day s to be mo nitored fr om run dat e
  450      -- ==== ========== ========== ========== ========== ========== ========== ========== ====
  451  
  452      VC_log_ step := 'O btain valu e max num  days to be  monitored ';
  453  
  454      SELECT  VALUE
  455        INTO  VN_max_num _days_moni tored
  456      FROM AD RMGT.ADR_P ARAMETER
  457      WHERE   applicatio n_name = ' ADR_JOB_MO NITORING'
  458      AND PAR AMETER_NAM E = 'DAYS_ BE_MONITOR ED';
  459  
  460      VN_max_ num_days_m onitored : = NVL(VN_m ax_num_day s_monitore d,1);  --  set defaul t to 1 day
  461  
  462  
  463      -- ==== ========== ========== ========== ========== ========== ========== ========== =========
  464      -- Obta in value m ax num err ors record s to be di splayed in  the body  email noti fication.
  465      -- ==== ========== ========== ========== ========== ========== ========== ========== =========
  466      VC_log_ step := 'O btain valu e max num  days to be  monitored ';
  467  
  468      SELECT  VALUE
  469           IN TO VN_max_ rec_displa y
  470      FROM AD RMGT.ADR_P ARAMETER
  471      WHERE   applicatio n_name = ' ADR_JOB_MO NITORING'
  472      AND PAR AMETER_NAM E = 'NUM_R OWS_DISPLA Y_MAX';
  473  
  474      VN_max_ rec_displa y := NVL(V N_max_rec_ display,30 );  -- set  max defau lt to 30 r ows
  475  
  476  
  477      VC_log_ step := 'P arsing str ing column  names';
  478  
  479      -- ==== ========== ========== ========== ========== ========== ========== ========== ====
  480      -- Pars e the stri ng the col umn list t o cound nu mber of co lumn delim eted by co mma
  481      -- ==== ========== ========== ========== ========== ========== ========== ========== ====
  482  
  483      DBMS_UT ILITY.COMM A_TO_TABLE (LV_Str_Li st, LB_cnt , LA_Tab_S tr);
  484  
  485      -- ==== ========== ========== ========== ========== ========== =====
  486      -- Sett up WHERE c lause limi t to the l ast 3 days  from sysd ate
  487      -- ==== ========== ========== ========== ========== ========== =====
  488  
  489      LC_WHER E_LIMIT :=  ' WHERE T RUNC('||P_ LIMIT_DATE _COLUMN||' ) >= TO_DA TE('''||P_ BEG_DATE|| ''')-'||VN _max_num_d ays_monito red;
  490  
  491      DBMS_OU TPUT.PUT_L INE(LC_WHE RE_LIMIT);
  492  
  493      IF P_WH ERE_LIST I S NOT NULL  THEN
  494        VC_WH ERE := LC_ WHERE_LIMI T|| ' AND  '||
  495                    P_WH ERE_LIST||
  496                    ' OR DER BY '|| P_ORDER_BY ||' DESC ) '||
  497                    ' WH ERE ROWNUM  <='||VN_m ax_rec_dis play;  --M ake sure n umber of d isplayed r ows not ex ceed 30
  498  
  499      ELSE
  500         VC_W HERE := LC _WHERE_LIM IT||
  501                    ' OR DER BY '|| P_ORDER_BY ||' DESC ) '||
  502                    ' WH ERE ROWNUM  <='||VN_m ax_rec_dis play;  --M ake sure n umber of d isplayed r ows not ex ceed 30
  503      END IF;
  504  
  505      DBMS_OU TPUT.PUT_L INE(VC_WHE RE);
  506  
  507      VC_log_ step := 'P arsed and  count colu mns number .';
  508      /****** ********** ********** ********** ********** ******/
  509      /*                                                       */
  510      /* Pars e the colu mn list to  count num ber of col umns */
  511      /*                                                       */
  512      /****** ********** ********** ********** ********** ******/
  513  
  514      FOR I I N 1 .. LA_ Tab_Str.CO UNT LOOP
  515           --  display s ubstring
  516  
  517           LC _TMP := TR IM(LA_Tab_ Str(I));
  518           LN _col_count  := I;
  519  
  520           IF  LC_TMP IS  NULL THEN
  521               EXIT;
  522           EN D IF;
  523  
  524      END LOO P;
  525  
  526      IF LN_c ol_count >  1 THEN
  527  
  528           LN _col_count  := LN_col _count - 1 ;
  529      ELSE
  530  
  531           LN _col_count  := 1;
  532      END IF;
  533  
  534      VC_log_ step := 'B uilding VC _SQLSTMT';
  535      VC_SQLS TMT := VC_ SELECT1||  'SELECT '| |P_COL_LIS T||'  FROM  '||P_TAB_ NAME ||' ' ||VC_WHERE ;
  536  
  537  
  538      DBMS_OU TPUT.PUT_L INE(VC_SQL STMT);
  539  
  540      /****** ********** ********** ********** ********** ********** ****/
  541      /* Form at body em ail when t he column  list has o nly 1 colu mn */
  542      /****** ********** ********** ********** ********** ********** ****/
  543  
  544      IF LN_c ol_count =  1 THEN
  545  
  546          VC_ log_step : = 'Formatt ing email  body of 1  column.';
  547          EXE CUTE IMMED IATE VC_SQ LSTMT  BUL K COLLECT  INTO lc_co l1 ;
  548  
  549  
  550          --  Appending  values whi le looping  thru coll ections
  551          FOR  I in 1..l c_col1.COU NT LOOP
  552  
  553              LC_err_str :=  'Ln# ' ||I||'- Jo b Name: '| |SUBSTR(TR IM(lc_col1 (I)),1,VN_ STR_LEN)|| CHR(10);
  554  
  555              LC_str :=  LC_str||CH R(10)||LC_ err_str;
  556  
  557              DBMS_OUTPU T.PUT_LINE (LC_str);
  558  
  559              IF LN_MAX_ ROWS_DISP  < I THEN   -- Make su re display ed rows no t exists m ore than 2 0
  560  
  561                    EXIT ;
  562              END IF;
  563  
  564          END  LOOP;
  565  
  566  
  567      /****** ********** ********** ********** ********** ********** *****/
  568      /* Form at body em ail when t he column  list has o nly 2 colu mns */
  569      /****** ********** ********** ********** ********** ********** *****/
  570  
  571      ELSIF L N_col_coun t = 2 THEN
  572  
  573          VC_ log_step : = 'Formatt ing email  body of 2  columns.';
  574          EXE CUTE IMMED IATE VC_SQ LSTMT  BUL K COLLECT  INTO lc_co l1, lc_col 2;
  575  
  576          --  Appending  values whi le looping  thru coll ections
  577  
  578          FOR  I in 1..l c_col1.COU NT LOOP
  579  
  580              LC_err_str := 'Ln# '| |I||'- Job  Name: '|| SUBSTR(TRI M(lc_col1( I)),1,VN_S TR_LEN)||C HR(10)||
  581                SUBSTR(T RIM(lc_col 2(I)),1,VN _STR_LEN);
  582  
  583              LC_str :=  LC_str||CH R(10)||LC_ err_str;
  584  
  585  
  586              DBMS_OUTPU T.PUT_LINE (LC_str);
  587  
  588  
  589              IF LN_MAX_ ROWS_DISP  < I THEN   -- Make su re display ed rows no t exists m ore than 2 0
  590                  EXIT;
  591              END IF;
  592  
  593          END  LOOP;
  594  
  595  
  596      /****** ********** ********** ********** ********** ********** *****/
  597      /* Form at body em ail when t he column  list has o nly 3 colu mns */
  598      /****** ********** ********** ********** ********** ********** *****/
  599  
  600      ELSIF L N_col_coun t = 3 THEN
  601  
  602          VC_ log_step : = 'Formatt ing email  body of 2  columns.';
  603          EXE CUTE IMMED IATE VC_SQ LSTMT  BUL K COLLECT  INTO lc_co l1, lc_col 2, lc_col3  ;
  604  
  605          FOR  I in 1..l c_col1.COU NT LOOP
  606  
  607              LC_err_str :=  'Ln# ' ||I||'- Jo b Name: '| |SUBSTR(TR IM(lc_col1 (I)),1,VN_ STR_LEN)|| CHR(10)||
  608               SUBSTR(TR IM(lc_col2 (I)),1,VN_ STR_LEN)||  VN_SEPARA TOR|| SUBS TR(TRIM(lc _col3(I)), 1,VN_STR_L EN);
  609  
  610              LC_str :=  LC_str||CH R(10)||LC_ err_str;
  611              DBMS_OUTPU T.PUT_LINE (LC_err_st r) ;
  612  
  613              IF LN_MAX_ ROWS_DISP  < I THEN   -- Make su re rows di splayed no t exists m ore than 2 0
  614                   EXIT;
  615              END IF;
  616  
  617          END  LOOP;
  618  
  619  
  620      /****** ********** ********** ********** ********** ********** *****/
  621      /* Form at body em ail when t he column  list has o nly 4 colu mns */
  622      /****** ********** ********** ********** ********** ********** *****/
  623  
  624      ELSIF L N_col_coun t = 4 THEN
  625  
  626         VC_l og_step :=  'Formatti ng email b ody of 3 c olumns.';
  627         EXEC UTE IMMEDI ATE VC_SQL STMT  BULK  COLLECT I NTO lc_col 1, lc_col2 , lc_col3, lc_col4;
  628  
  629         FOR  I in 1..lc _col1.COUN T LOOP
  630  
  631              LC_err_str :=  'Ln# ' ||I||'- Jo b Name: '| |SUBSTR(TR IM(lc_col1 (I)),1,VN_ STR_LEN)|| CHR(10)||
  632               SUBSTR(TR IM(lc_col2 (I)),1,VN_ STR_LEN)||
  633                VN_SEPAR ATOR||SUBS TR(TRIM(lc _col3(I)), 1,VN_STR_L EN)||VN_SE PARATOR||S UBSTR(TRIM (lc_col4(I )),1,VN_ST R_LEN)||CH R(10);
  634  
  635              LC_str :=  LC_str||CH R(10)||LC_ err_str;
  636  
  637              IF LN_MAX_ ROWS_DISP  < I THEN   -- Make su re rows di splayed no t exists m ore than 2 0
  638                  EXIT;
  639              END IF;
  640  
  641         END  LOOP;
  642  
  643      /****** ********** ********** ********** ********** ********** *****/
  644      /* Form at body em ail when t he column  list has o nly 5 colu mns */
  645      /****** ********** ********** ********** ********** ********** *****/
  646  
  647      ELSIF L N_col_coun t = 5 THEN
  648  
  649          VC_ log_step : = 'Formatt ing email  body of 5  columns.';
  650          EXE CUTE IMMED IATE VC_SQ LSTMT  BUL K COLLECT  INTO lc_co l1, lc_col 2, lc_col3 ,lc_col4,  lc_col5 ;
  651  
  652          FOR  I in 1..l c_col1.COU NT LOOP
  653  
  654              LC_err_str :=  'Ln# ' ||I||'- Jo b Name: '| |SUBSTR(TR IM(lc_col1 (I)),1,VN_ STR_LEN)|| CHR(10)||
  655  
  656              SUBSTR(TRI M(lc_col2( I)),1,VN_S TR_LEN)||  VN_SEPARAT OR||SUBSTR (TRIM(lc_c ol3(I)),1, VN_STR_LEN )||VN_SEPA RATOR||SUB STR(TRIM(l c_col4(I)) ,1,VN_STR_ LEN)||
  657                       V N_SEPARATO R||SUBSTR( TRIM(lc_co l5(I)),1,V N_STR_LEN) ;
  658  
  659               LC_str :=  LC_str||C HR(10)||LC _err_str;
  660              DBMS_OUTPU T.PUT_LINE (LC_str);
  661  
  662              DBMS_OUTPU T.PUT_LINE ('line '|| i||': '||l c_col1(i)| |'***: '||  lc_col2(i )||'***: ' || lc_col3 (i)||'***:  '|| lc_co l4(i)||lc_ col5(i)||' **END');
  663  
  664              IF LN_MAX_ ROWS_DISP  < I THEN   -- Make su re rows di splayed no t exists m ore than 2 0
  665                    EXIT ;
  666              END IF;
  667  
  668  
  669         END  LOOP;
  670  
  671      END IF;
  672  
  673  
  674      /****** ********** ********** ********** ********** ********** ******/
  675      /* If f ormat emai l body is  empty that  means no  error foun d.   */
  676      /* Ther efore, no  need to se nd out not ifications .              */
  677      /****** ********** ********** ********** ********** ********** ******/
  678  
  679      IF LC_s tr IS NOT  NULL THEN
  680  
  681         VC_l og_step :=  'Retrievi ng emails  from '||p_ email_grou p;
  682  
  683         SELE CT EMAIL_A DDRESS_LIS T
  684           IN TO  VC_ema il_list
  685         FROM  ADRMGT.AD R_USER_CON TACT
  686         WHER E CONTACT_ EMAIL_USER _NAME = p_ email_grou p;
  687  
  688  
  689         VC_l og_step :=  'Construc ting subj  email.';
  690  
  691         vSub j := VC_pr ocess_name ||' - Erro r Found in  '||P_TAB_ NAME ||'(' ||VN_Inst_ name||'@'| |VC_host_n ame||')';
  692  
  693         VC_l og_step :=  'Construc ting body  email.';
  694  
  695         vMes g := 'Runt ime Criter ia: Max nu m rows <=  '|| LEAST( VN_max_rec _display,L N_MAX_ROWS _DISP)||CH R(10)||
  696                    VC_W HERE||CHR( 10)||
  697                    '=== ========== ========== ========== =='||CHR(1 0)||
  698                    LC_s tr||  CHR( 10)||
  699        '**** ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** *****'||CH R(10)||
  700        'ACTI ON: Please  take appr opriate ac tion to re solve the  errors. Ch eck '||P_T AB_NAME||'  for more  details.'| |CHR(10)||
  701        '**** ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** *****';
  702  
  703  
  704        /**** ********** ********** ********** ********** ********** ********** ***/
  705        /*                                                                        */
  706        /* Se nding emai l notifica tions to g roups on e rrors foun d.           */
  707        /*                                                                        */
  708        /**** ********** ********** ********** ********** ********** ********** ***/
  709  
  710        VC_lo g_step :=  'Invoking  utl_mail.s end';
  711  
  712          UTL_MAIL.S END (SENDE       => 'oracle @'||VC_hos t_name||' DNS . URL ',
  713                         RECIPIENTS   => VC_em ail_list,
  714                         SUBJECT      => vSubj ,
  715                         MESSAGE      => vMesg );
  716  
  717        ADRMG T.Job_Proc ess_Log_Sp (
  718               PC_job_na me => SUBS TR(VC_proc ess_name,1 ,60),
  719               PD_job_lo g_date =>  SYSDATE,
  720               PC_job_st atus => SU BSTR('INFO RMATION -  '||VC_log_ step,1,60) ,
  721               PC_job_lo g_message  => SUBSTR( VC_log_ste p,1,2000),
  722               PD_date1  => SYSDATE ,
  723               PC_text1  => SUBSTR( VC_log_ste p,1,255));
  724  
  725  
  726      ELSE
  727  
  728        VC_lo g_step :=  'No Data M essage fou nd.';
  729        ADRMG T.Job_Proc ess_Log_Sp (
  730               PC_job_na me => SUBS TR(VC_proc ess_name,1 ,60),
  731               PD_job_lo g_date =>  SYSDATE,
  732               PC_job_st atus => SU BSTR('INFO RMATION -  '||VC_log_ step,1,60) ,
  733               PC_job_lo g_message  => SUBSTR( VC_log_ste p,1,2000),
  734               PD_date1  => SYSDATE ,
  735               PC_text1  => SUBSTR( VC_log_ste p,1,255));
  736  
  737      END IF;
  738  
  739     EXCEPTIO N
  740  
  741       WHEN N O_DATA_FOU ND THEN
  742  
  743         NULL ;
  744  
  745       WHEN O THERS THEN
  746  
  747         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  748                                      PD_job_e rror_date   => SYSDAT E,
  749                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  750                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  751                                                                        || SQLE RRM,1,2000 ),
  752                                      PD_date1  => SYSDAT E,
  753                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  754  
  755  
  756   END JOB_MO NITOR_SP;
  757   /