cross clmn

Thursday, 19 May 2016

Netezza Full Backup on Puredata nzbackup

#Shell script for Netezza Full Backup on  Puredata
##Full database Backup  crontab entry
30 15 * * 1 /scripts/NZfullbackup.sh PCTGDM > /export/home/nz/scripts/log/NZfullbackup.log  2>&1
####################################################################
#!/bin/sh
##Pass Database name with space
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
email_list="NZRed@gmail.com,GCIT-PHXNOC@gmail.com"
DBA="NZyellow@gmail.com"
echo "Please call DBA on call, If It's not acknowledged by DBA" > /tmp/massage.log
HOST=`hostname`
if [ $# > 0 ]; then
    for i in "$@"
        do
    DBNAME=$(nzsql -l|grep -w $i |awk '{ print $i}'|cut -d '|' -f1)
    if [ $i = $DBNAME ]; then
                DBNAME=$i
                BKTP=FULL
                DB_TYPE=PROD
                LOG_DIR=/export/home/nz/scripts/log
                LOG=$LOG_DIR/$i_backup_`hostname`_`date +%y%m%d%H%M%S`.log
                BKP_LOG_DIR=/nz/kit/log/backupsvr/
        echo "Starting Full backup of Database $DBNAME" >$LOG
        #######Backup
                NOW=$(date +"%Y-%m-%d")
                nzbackup -u admin -db $DBNAME -connector netbackup -connectorArgs "DATASTORE_SERVER=edp-nbu-120-ap:DATASTORE_POLICY=phx_netezza"  -streams 8 -v  >>$LOG
                        if [ $? -ne 0 ]; then
                                cat /tmp/massage.log | mailx -s "FAILED:$DB_TYPE NZ  $DBNAME $BKTP Database Backup on  $HOST " -a $LOG $email_list
                        else
                                BKPSTS=$(nzsql  -qc  "SELECT  status  FROM  _v_backup_history     WHERE   optype='${BKTP}'    AND     dbname = '${DBNAME}'  AND     starttime = (SELECT MAX(starttime) FROM _v_backup_history where OPTYPE='${BKTP}' and DBNAME = '${DBNAME}');")
                                BKPLOG=$(nzsql  -qc  "SELECT  logfile  FROM  _v_backup_history     WHERE   optype='${BKTP}'    AND     dbname = '${DBNAME}'  AND     starttime = (SELECT MAX(starttime) FROM _v_backup_history where OPTYPE='${BKTP}' and DBNAME = '${DBNAME}');")
                                STATUS=`echo $BKPSTS|cut -d " " -f3`
                                LOGFILE=`echo $BKPLOG|cut -d " " -f3`
                                cd $BKP_LOG_DIR
                                BKP_DT=`echo $LOGFILE|cut -d "." -f3`
                                echo $BKP_DT
                                        if [ $BKP_DT = $NOW ] && [ $STATUS = "COMPLETED" ]; then
                                                #cat $BKP_LOG_DIR/$LOGFILE | mailx -s "SUCCESS:$DB_TYPE NZ  $DBNAME $BKTP Database Backup on  $HOST " $email_list
                                                 echo "Backup Success"
                                        else
                                        cat /tmp/massage.log | mailx -s "FAILED:$DB_TYPE NZ $DBNAME FULL Database Backup on  $HOST " -a $BKP_LOG_DIR/$LOGFILE $email_list
                                        fi
                        fi
    else
     echo "$i Database does not exist on $HOST"| mailx -s "Notification:$DB_TYPE  NZ $i  Database Backup failed on  $HOST " $DBA
    fi
    done
else
echo "Please specify database name " >>$LOG
exit 1;
fi

Monday, 2 May 2016

Shell script to Netezza System status (NPS) IBM Netezza

#Shell script to Netezza System status (NPS) IBM Netezza
#Manish Jaiswal
#!/bin/sh
# =============================================================================
# Netezza  NPS Status
# =============================================================================
# Script configuration - Static values only.
# =============================================================================
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
NPS_STATE=`nzstate | awk '{print $4}' | tr -d "[.']" | tr "[a-z]" "[A-Z]"`
# ------------------------------------------------------------------------
# Make sure the system is online.
# ------------------------------------------------------------------------
if [ "${NPS_STATE}" = "ONLINE" ]
then
   echo "${NPS_STATE}"
        SYSTEMSTATE=0
else
   echo "NPS ${NPS_STATE} OFFLINE During Hostbackup!"
   echo  " NPS is Offline on  $HOST in Current state: [${NPS_STATE}]"|mailx -s "CRITICAL:NZHOSTBACKUP  on  $HOST " $email_list
   exit;
fi

Shell script to Generate Table skew Report on IBM Netezza System(nz_skew).

#Shell script to Generate Table skew  Report  on IBM Netezza System(nz_skew).
#Manish Jaiswal
#!/bin/sh
# =============================================================================
# Netezza Table Skew script
# =============================================================================
# Script configuration - Static values only.
# =============================================================================
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
export email_list="NZGreen@gmail.com,EDW_Support@gmail.com"
#export email_list="manish.jaiswal@gmail.com"
export SCRIPTOUTPUTDIR=/export/home/nz/scripts/MONITOR
export VIPHOSTNAME=EDW-NTZ-001-LQC
export SCRIPTSTART=$(date -d "$1" +"%Y%m%d")
export NZSUPPORT7207BINDIR=/nz/support-IBM_Netezza-7.2.0.7.P1-160122-1638/bin
export RPT_FILE="${SCRIPTOUTPUTDIR}/${VIPHOSTNAME}.skew.${SCRIPTSTART}.txt"
find $SCRIPTOUTPUTDIR/*txt  -mtime +5 -exec rm {} \;

# -----------------------------------------------------------------------------
# Run the nz_skew command and generate report.
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Start the checks.
# -----------------------------------------------------------------------------
echo "Starting table skew check for ${VIPHOSTNAME}"

${NZSUPPORT7207BINDIR}/nz_skew -sort size | grep -v "^ [DPQ]MISC"   > ${RPT_FILE} 2>&1

RetCode=$?

# Check the outcome.
if [ ${RetCode} -eq 0 ]
then
        echo "Successful."
else
        echo "FAILED!"
echo  "Table skew check report generation failure! [${VIPHOSTNAME}]" |mailx -s "Notification:Table skew check report generation failure! [${VIPHOSTNAME}]" $email_list
exit;
fi

echo "Finished table skew check for ${VIPHOSTNAME}"
# -----------------------------------------------------------------------------
# Distribute the table skew check report.
# -----------------------------------------------------------------------------
echo "Distributing table skew report for ${VIPHOSTNAME}"

echo  "Netezza Table Skew Report for  ${VIPHOSTNAME}" |mailx -s "Netezza Table Skew Report for  ${VIPHOSTNAME} " -a ${RPT_FILE} $email_list

# =============================================================================
# Script Completion
# =============================================================================

shell script to Monitor Disk on Netezza IBM system disk_monitor

#shell script to Monitor Disk on Netezza IBM system  disk_monitor
#Manish Jaiswal
#!/bin/sh
# =============================================================================
# Netezza Disk Monitor Template
# =============================================================================
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
email_list="NZRed@gmail.com,EDW_Support@gmail.com"
SCRIPTOUTPUTDIR=/export/home/nz/scripts/MONITOR
VIPHOSTNAME=EDW-NTZ-001-LQC
SCRIPTSTART=$(date -d "$1" +"%Y%m%d")
export NZSUPPORT7207BINDIR=/nz/support-IBM_Netezza-7.2.0.7.P1-160122-1638/bin
export RPT_FILE="${SCRIPTOUTPUTDIR}/${VIPHOSTNAME}.DiskMonitor.${SCRIPTSTART}.txt"
export CLEAN_RPT_FILE="${SCRIPTOUTPUTDIR}/${VIPHOSTNAME}.DiskMonitor.${SCRIPTSTART}.clean.txt"
export ACTIONS_FILE="${SCRIPTOUTPUTDIR}/${VIPHOSTNAME}.DiskMonitor.${SCRIPTSTART}.actions.txt"
find $SCRIPTOUTPUTDIR/*txt  -mtime +5 -exec rm {} \;
# -----------------------------------------------------------------------------
# Start the disk checks.
# -----------------------------------------------------------------------------
echo  "Starting disk monitor for ${VIPHOSTNAME}"

#/nz/support-IBM_Netezza-7.2.0.7.P1-160122-1638/bin/adm/disk_monitor \

${NZSUPPORT7207BINDIR}/adm/disk_monitor   > ${RPT_FILE} 2>&1

RetCode=$?

# Check the outcome.
if [ ${RetCode} -eq 0 ]
then
        echo "Successful."
else
        echo "FAILED!"
        echo  "Disk monitor report generation failure! [${VIPHOSTNAME}]" |mailx -s "Notification:Disk monitor report generation failure! [${VIPHOSTNAME}]" $email_list
fi

echo  "Finished disk monitor for ${VIPHOSTNAME}"
# -----------------------------------------------------------------------------
# Check for actionable items and alert as needed.
# -----------------------------------------------------------------------------

echo "Checking ${VIPHOSTNAME} disk monitor report for actionable items"

# Strip the stderr output from the report.
sed -ne '/^[A-Z]/d;p' "${RPT_FILE}"  | sed -e '/Fewer lines on second insert/d' > ${CLEAN_RPT_FILE}

# Extract the actionable portion of the report.
sed -n '/Actionable/,/^(/p' ${CLEAN_RPT_FILE} > ${ACTIONS_FILE}

# Get the number of actionable items.
ActionableItems=`grep "^(" ${ACTIONS_FILE} | sed 's/[^0-9]*//g'`

# If we dont have any actions to take then we're done.  Otherwise send an alert.
if [ ${ActionableItems} -eq 0 ]
then
echo  "No actions needed"
        #echo  "No actions needed"|mailx -s "Notification:Disk monitor report generation suceed! [${VIPHOSTNAME}]" $email_list
else
        echo "${ActionableItems} actionable items found!"
        echo "Disk monitor report found actionable items! [${VIPHOSTNAME}]"

       echo  "Disk failure Found in [${VIPHOSTNAME}]" |mailx -s "Disk failure Found in [${VIPHOSTNAME}] " -a ${ACTIONS_FILE} $email_list
fi

# =============================================================================
# Script Completion
# =============================================================================

Shell Script to check invalid Views on IBM Netezza System (nz_check_views)

#Shell Script to check invalid  Views on IBM Netezza System
#Manish Jaiswal
#!/bin/sh
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
DBA_email="EDW_Support@gmail.com"
DATE=`date +%Y-%m-%d:%H:%M:%S`
LOG=/export/home/nz/scripts/log/check_invalid_views_lp_$DATE.log
echo "Starting view check on `hostname` " > $LOG
for i in `cat /export/home/nz/scripts/PRD_LP_DB_List.lst`
        do
         echo "Starting view check of Database $i " >> $LOG
         nz_check_views $i >> $LOG
done
echo " Find the NZ View check  Report for `hostname` server in attachment"| mailx -s "`hostname` NZ View check  Report for Netezza  on `date +%y%m%d%H%M%S` " -a $LOG "$DBA_email"

Shell Scripts to Generate Statistics on IBM Netezza System ( nz_genstats) GENERATE EXPRESS STATISTICS

#Shell Scripts to Generate Statistics on IBM Netezza System ( nz_genstats) GENERATE EXPRESS #STATISTICS
#Manish Jaiswal
#!/bin/sh
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
### Database List needed to be analyzed
DB_LIST=$(nzsql -l |awk ' NR > 3'|sed '$d' |awk '{ print $1 }'|sed '$d')
##############
DBA_email="EDW_Support@gmail.com"
DAY=`date '+%a'`
LOG_DIR=/export/home/nz/scripts/log
LOG=$LOG_DIR/analyzed_`hostname`_`date +%y%m%d%H%M%S`.log
###Delete 15 days old log
find $LOG_DIR/*.log  -type f -mtime +15 -exec rm -f {} \; 2> /dev/null
##############################
###Main Function
analyze_db_fn()
{
### Genrate Gather stats  for $DAY listed databses
  for i in `echo $DB_LIST`
           do
           echo "Starting Gather stats of Database $i on `date +%y%m%d%H%M%S` " >> $LOG
  nz_genstats ${i} >> $LOG
  if [ $? -eq 0 ]; then
  echo "Succeeed GENERATE EXPRESS STATISTICS of database $i on `date +%y%m%d%H%M%S` " >> $LOG
  else
  echo "Failure GENERATE EXPRESS STATISTICS of database $i on `date +%y%m%d%H%M%S` " >> $LOG
  fi
   done
echo " Please find GENERATE STATISTICS Report in attachment for `hostname`"| mailx -s " Gather Stats  Report for Netezza $DAY `hostname` server on `date +%y%m%d%H%M%S` " -a $LOG "$DBA_email"
}
##############################
##Call Funtion to Genrate stats
analyze_db_fn
##

Shell Scripts for NZ GROOM on Netezza IBM system

#Shell Scripts  for NZ GROOM on Netezza IBM system
#Manish Jaiswal
#!/bin/sh
cd /export/home/nz
. ~/.bashrc
export PATH=/nz/kit/bin:/nz/kit/sbin:/nz/kit/bin/adm:/bin:/usr/bin:/usr/local/bin:.:/nz/support/bin
### Database List needed to be groom
##Big Databases
DB_LIST_WED_SAT=$(nzsql -l |awk ' NR > 3'|sed '$d' |awk '{ print $1 }'|sed '$d'|egrep -E '(PGCIDW|PGCRDW|PMFIDW|PMACDW)')
##small Databases
DB_LIST_SUN=$(nzsql -l |awk ' NR > 3'|sed '$d' |awk '{ print $1 }'|sed '$d'|egrep -v '(PGCIDW|PGCRDW|PMFIDW|PMACDW)')
##############
DBA_email="EDW_Support@gmail.com"
DAY=`date '+%a'`
LOG_DIR=/export/home/nz/scripts/log
LOG=$LOG_DIR/groom_`hostname`_`date +%y%m%d%H%M%S`.log
###Delete 15 days old log
find $LOG_DIR/*.log  -type f -mtime +15 -exec rm -f {} \; 2> /dev/null
##############################
###Main Function
groom_db_fn()
{
### running groom for $DAY listed databses
echo "groom started for `hostname1` " > $LOG
  for i in `echo $GROOM_DB_LIST`
           do
           echo "Starting Groom of Database $i on `date +%y%m%d%H%M%S` " >> $LOG
           Table_name=$(nzsql -A -c "select  objname as table_name from _v_sys_relation_xdb sys where database='$i';"|awk ' NR > 1 '|sed '$d')
              for T in `echo $Table_name`
               do
                   nz_groom ${i} $T -records >> $LOG
                   if [ $? -eq 0 ];then
                   echo "Completed: Groom of Table $T Database $i on `date +%y%m%d%H%M%S` " >>$LOG
                   else
                   echo "Failed: Groom of Table $T Database $i on  " >> $LOG
                   fi

               done
   done
echo " Find the Groom Report for Netezza `hostname` server in attachment"| mailx -s " Groom Report for Netezza $DAY `hostname` server on `date +%y%m%d%H%M%S` " -a $LOG "$DBA_email"
}
##############################
###checking the day
if [ $DAY == "Wed" ] || [ $DAY == "Sat" ]; then
        GROOM_DB_LIST=$DB_LIST_WED_SAT
echo "second block"
       groom_db_fn
        echo $DAY
elif [ $DAY == "Sun" ]; then
        echo $DAY
                GROOM_DB_LIST=$DB_LIST_SUN
                groom_db_fn
else
        echo "GROOM Dont not run on $DAY" > LOG
        exit;
fi