Im attaching a sample DB2UEXIT program that I used in another life because
some people have asked me for it recently.  This is a simple korn shell
script that I ran under AIX but I sure runs in HP and other flavours because
the code is very generic.  The code itself simply copies a log file from the
directory where I store active logs to another directory where I archive
them to tape.  It does have a nice feature of maintaining an audit log of
everything it does so you can monitor its status.

>  <<db2uexit.txt>> 
> 
> TTFN and Hold Fast!
> Scott McLeod of MacLeod
> Best Buy, Inc.
> Sr. Database Architect
> 7750 Flying Cloud Dr.
> Eden Prairie, MN 55344
> 
> (612) 324-0031 (voice)
> (612) 324-0828 (fax)
> 
> [EMAIL PROTECTED]
> 
> 
#!/bin/ksh
################################################################################
#
# Usage:  db2uexit
#
# Description: This script migrates active log files to the archive logs
# directory.  It is invoked by DB2 automatically when a log full condition
# occurs.
#
# Parameters: See the IBM manual for information.
#
################################################################################
################################################################################
# Run the profile of the DB2 subsystem that invokes the exit
################################################################################
MYHOME="/db2_6000/`whoami`"
. $MYHOME/.profile > /dev/null 2>&1

################################################################################
# Set a path for a log file that contains info on archiving.
################################################################################
DIAGPATH="`db2 get dbm cfg | grep DIAGPATH |  cut -c60-100`"
DIAGLEVEL="`db2 get dbm cfg | grep DIAGLEVEL | cut -c60-90`"
AUDIT_LOG=true
AUDIT_LOG_FILE="$DIAGPATH/db2uexit.log"
AUDIT_LOG_FILE="/db2_6000/db2p/sqllib/db2dump/db2uexit.log"

if [ "$AUDIT_LOG" = true ];then
   echo "***************************************************************"  >> 
$AUDIT_LOG_FILE
   echo "Userexit begins at `date`"  >> $AUDIT_LOG_FILE
   echo "DIAGLEVEL=$DIAGLEVEL,DIAGPATH=$DIAGPATH" >> $AUDIT_LOG_FILE
fi
#------------------------------------------------------------------------------#
#--  Test the number of parms passed and the format of them.                 --#
#------------------------------------------------------------------------------#
if [ $# -ne 4 ];then
   if [ "$AUDIT_LOG" = true ];then
      echo "Incorrect number of parms passed to Userexit program" >> $AUDIT_LOG_FILE
      echo "Number of parms passed was $#"  >> $AUDIT_LOG_FILE
   fi
   exit 20
fi

if [ "$1" = ARCHIVE ];then
   continue
else
   if [ "$1" = RETRIEVE ];then
      continue
   else
      if [ "$AUDIT_LOG" = true ];then
         echo "Unsupported function requested from Userexit program" >> $AUDIT_LOG_FILE
         echo "Function requested was $1"  >> $AUDIT_LOG_FILE
      fi
      echo "***************************************************************\n"  >> 
$AUDIT_LOG_FILE
      exit 20
   fi
fi

#------------------------------------------------------------------------------#
#--  ARCHIVE requests will copy file from activelogs to archivelogs
#------------------------------------------------------------------------------#
if [ "$1" = ARCHIVE ];then
   #---------------------------------------------------------------------------#
   #-- Audit the request                                                     --#
   #---------------------------------------------------------------------------#
   if [ "$AUDIT_LOG" = true ];then
      echo "`date` DB2UEXIT AUDIT LOG ENTRY" >> $AUDIT_LOG_FILE
      echo "Request to $1 file $4 from $3" >> $AUDIT_LOG_FILE
   fi
   #---------------------------------------------------------------------------#
   #-- Copy the file to archivelogs                                          --#
   #---------------------------------------------------------------------------#
   LCDBNAME="`echo $2 | tr 'A-Z' 'a-z'`"
   echo "cp $3$4 $MYHOME/archivelogs/$LCDBNAME" >> $AUDIT_LOG_FILE
   cp $3$4 $MYHOME/archivelogs/$LCDBNAME >> $AUDIT_LOG_FILE 2>&1
   UNIXRC=$?
   if [ "$UNIXRC" -ne 0 ];then
      STANDRC=$STANDRC_28
      if [ "$AUDIT_LOG" = true ];then
         echo "cp Command Failed with RC:$UNIXRC" >> $AUDIT_LOG_FILE
      fi
      echo "***************************************************************\n"  >> 
$AUDIT_LOG_FILE
      exit 28
   fi
   #---------------------------------------------------------------------------#
   #-- Audit the request                                                     --#
   #---------------------------------------------------------------------------#
   if [ "$AUDIT_LOG" = true ];then
      echo "Request to $1 file $4 from $3 was successful" >> $AUDIT_LOG_FILE
   fi
fi

#------------------------------------------------------------------------------#
#--  RETRIEVE requests will cp a file from archivelogs to activelogs
#------------------------------------------------------------------------------#
if [ "$1" = RETRIEVE ];then
   #---------------------------------------------------------------------------#
   #-- Audit the request                                                     --#
   #---------------------------------------------------------------------------#
   if [ "$AUDIT_LOG" = true ];then
      echo "Request to $1 file $4 to $3" >> $AUDIT_LOG_FILE
   fi
   #---------------------------------------------------------------------------#
   #-- Copy the file
   #---------------------------------------------------------------------------#
   LCDBNAME="`echo $2 | tr 'A-Z' 'a-z'`"
   echo "cp $MYHOME/archivelogs/$LCDBNAME/$4 $3" >> $AUDIT_LOG_FILE
   cp $MYHOME/archivelogs/$LCDBNAME/$4 $3 >> $AUDIT_LOG_FILE 2>&1
   UNIXRC=$?
   if [ "$UNIXRC" -ne 0 ];then
      if [ "$AUDIT_LOG" = true ];then
         echo "cp Command Failed with RC:$UNIXRC" >> $AUDIT_LOG_FILE
         echo " "                            >> $AUDIT_LOG_FILE
      fi
      echo "***************************************************************\n"  >> 
$AUDIT_LOG_FILE
      exit 28
   fi
   #---------------------------------------------------------------------------#
   #-- Audit the request                                                     --#
   #---------------------------------------------------------------------------#
   if [ "$AUDIT_LOG" = true ];then
      echo "Request to $1 file $4 to $3 was successful" >> $AUDIT_LOG_FILE
   fi
fi

if [ "$AUDIT_LOG" = true ];then
   echo "Userexit ends at `date`"  >> $AUDIT_LOG_FILE
   echo "***************************************************************\n"  >> 
$AUDIT_LOG_FILE
fi

Reply via email to