CAN U PLS WALK THROUGH THE CODE AND LET ME KNOW WHY I AM GETTING INFINITE LOOP..
WITH OUTPUT AS LOOKS LIKE SOMETHING TO DO WITH WHILE LOOP INSIDE COULD NOT ABLE TO UNDERSTAND .
THE ERROR CODE IS ORA-06512
ORA-06512
ORA-06512
ORA-06512
.
.
.#!/bin/ksh
function email_out
{
typeset EMAIL_LIST
if [[ -z $1 ]] then
EMAIL_LIST="$FA_MAIL_LST"
else
EMAIL_LIST="$FA_MAIL_LST $1"
fi
email_hdlr
}
ERROR_CDE=""
MAX_LOOP_COUNT=3
MIN_LOOP_COUNT=1
TRAP_CODES="(ORA-04068|ORA-04061|ORA-06512)"
echo "Start of Process:$STARTTIME" >$LOGFILE
# Read the files from ccdbcen directory:
cd $TPE_CCDB_IN_DIR
for strFileName in `ls -trp CCDB* 2> /dev/null`
do
if [[ $SkipInd != "Y" ]]
then
echo "File Name: $strFileName<br>" >$LOGFILE.$strFileName
echo "File Name: $strFileName"
while [[ $MIN_LOOP_COUNT -le $MAX_LOOP_COUNT ]]
do
$ORACLE_HOME/bin/sqlplus -s >>$LOGFILE.$strFileName<< EOF
$TPE_LOGIN_STRING
set serveroutput on;
whenever sqlerror exit 1;
whenever oserror exit 1;
begin
-- Load the file into a work table and process
PKG_TPE_FA_LOAD.LOAD_NEW_CASES('$TPE_STAGE_IN_DIR' ,'$strFileName','$FA_REJECT_LIST');
end;
/
EOF
ERROR_MSG=`cat $LOGFILE.$strFileName`
ERROR_CDE=`egrep $TRAP_CODES $LOGFILE.$strFileName | sed 's/:.*//'`
echo "\nTHE ERROR CODE IS $ERROR_CDE"
if [[ $ERROR_CDE = "" ]]
then
break
else
continue
fi
#MIN_LOOP_COUNT=`expr $MIN_LOOP_COUNT + 1`
((MIN_LOOP_COUNT=MIN_LOOP_COUNT+1))
done
RETCODE=$?
if (( $RETCODE != 0 )) then
ENDTIME=`date +%m-%d-%y[%H:%M:%S]`
STATUS="FAILURE"
ERROR_MSG=`cat $LOGFILE.$strFileName`
echo "End of Process:$ENDTIME" >>$LOGFILE
echo "<br> The loop count is $MIN_LOOP_COUNT and Oracle error is $ERROR_CDE<br>" >>$LOGFILE.$strFileName
email_out $CMS_FTP_MAIL_LST
FailInd="Y"
FILE_DIR=$TPE_BAD_DIR
else
nRecCount=`wc -l $TPE_CCDB_IN_DIR/$strFileName|awk '{print $1}'`
((nRecCount=$nRecCount-2))
ENDTIME=`date +%m-%d-%y[%H:%M:%S]`
if [[ $nRecCount -le 200 ]] then
if [[ $nRecCount -gt 0 ]] then
STATUS="WARNING"
echo "<br>WARNING:Load File contains only $nRecCount records<br>" >>$LOGFILE.$strFileName
PROCESS_DETAILS=`cat $LOGFILE.$strFileName|egrep -iv "Start|End|PL/SQL|ORA|ERROR|begin"`
echo "<br> The loop count is $MIN_LOOP_COUNT and Oracle error is $ERROR_CDE<br>" >>$LOGFILE.$strFileName
email_out
else
ENDTIME=`date +%m-%d-%y[%H:%M:%S]`
STATUS="WARNING"
ERROR_MSG="$strFileName: File Does Not have any Detail Records"
echo "End of Process:$ENDTIME" >>$LOGFILE.$strFileName
email_out $CMS_FTP_MAIL_LST
fi
else
STATUS="SUCCESS"
PROCESS_DETAILS=`cat $LOGFILE.$strFileName|egrep -iv "Start|End|PL/SQL|ORA|ERROR|begin"`
email_out
fi
fi
fi # SkipInd
# Move the file to wherever the process has determined that it should go ($TPE_BAD_DIR or $TPE_ARCHIVE_IN_DIR).
MoveFileswithPerm $TPE_CCDB_IN_DIR/$strFileName $FILE_DIR $LOGFILE
fi # check file existence
done
APPRECIATE YOUR HELP IN THIS REGARD