#!/bin/ksh # # Purpose: # Backup Online RMAN # HOME_DIR="/app/oracle/techsoftware/RMAN_SCRIPTS" DB_NAME="PRD" INSTANCE_NAME=`ps aux | grep ora_smon_$DB_NAME 2>/dev/null | grep -v grep | awk '{ print $NF }' | sed "s;.*_;;g"` if [ X${INSTANCE_NAME} == "X" ] ; then echo "Istanza $DB_NAME non trovata" exit 1 fi DATE=`date +"%Y%m%d-%H_%M"` if [ "$NB_ORA_PC_SCHED" == "Full_Sett_level0" ] ; then RMAN_STRING="0" RMAN_LOG_FILE="${HOME_DIR}/log/bck_db_prod_lev0_${DATE}.log" NB_ORA_SCHED="RMAN_Full_Sett" elif [ "$NB_ORA_PC_SCHED" == "Cumul_level1" ] ; then RMAN_STRING="1 cumulative" RMAN_LOG_FILE="${HOME_DIR}/log/bck_db_prod_lev1_${DATE}.log" NB_ORA_SCHED="RMAN_Cumul" elif [ "$NB_ORA_PC_SCHED" == "Full_Mensile_level0" ] ; then RMAN_STRING="0" RMAN_LOG_FILE="${HOME_DIR}/log/bck_db_prod_lev0_${DATE}.log" NB_ORA_SCHED="RMAN_Full_Mensile" else echo "Usare NetBackup per lanciare policies RMAN." exit 1 fi echo > $RMAN_LOG_FILE echo "INIZIO BACKUP DATABASE : ${DATE}" >> $RMAN_LOG_FILE echo "ISTANZA DATABASE : ${INSTANCE_NAME}" >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE echo "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE echo "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE echo "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE echo "NB_ORA_CLIENT: $NB_ORA_CLIENT" >> $RMAN_LOG_FILE echo "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE echo "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE echo "NB_ORA_PC_SCHED: $NB_ORA_PC_SCHED" >> $RMAN_LOG_FILE echo "NB_ORA_SCHED: $NB_ORA_SCHED" >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE echo "Unix process: $$" >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE CMD_STRING=". ${HOME_DIR}/${INSTANCE_NAME}.env rman << EOF connect target; connect catalog xxxxxxx/yyyyyyy; run { allocate channel log1 type 'sbt_tape'; allocate channel log2 type 'sbt_tape'; send 'NB_ORA_CLIENT=$NB_ORA_CLIENT,NB_ORA_POLICY=$NB_ORA_POLICY,NB_ORA_SERV=$NB_ORA_SERV,NB_ORA_SCHED=$NB_ORA_SCHED'; backup filesperset=1 incremental level = $RMAN_STRING database; backup current controlfile; release channel log1; release channel log2; } EOF" su - orapr -c "$CMD_STRING" >> $RMAN_LOG_FILE 2>&1 echo "FINE BACKUP DATABASE : ${DATE}" >> $RMAN_LOG_FILE 2>&1 ${HOME_DIR}/check_RMAN_ORAERR.sh $NB_ORA_CLIENT $NB_ORA_POLICY $NB_ORA_PC_SCHED $RMAN_LOG_FILE RETVAL=$?; echo " il codice di errore : $RETVAL " >> $RMAN_LOG_FILE 2>&1 if [ $RETVAL -gt 0 ]; then echo " BACKUP DATABASE FALLITO " >> $RMAN_LOG_FILE 2>&1 exit 1; else echo "FINE BACKUP DATABASE " >> $RMAN_LOG_FILE 2>&1 exit 0; fi exit 0;