#!/bin/sh # --------------------------------------------------------------------------- # Script: ora_bkp_fullinc.sh # Descricao: Script de Backup Full e Incremental com BD Online # Banco de Dados: ac05 (RAC) # --------------------------------------------------------------------------- # Para execucao manual do shell script (sem usar NETBACKUP)setar variaveis # antes da execucao: # # NB_ORA_FULL=1 (se backup full) ou NB_ORA_INCR=1 (se backup incremental) # NB_ORA_SERV=sac0972 # NB_ORA_POLICY=SAC0977_ORCUNX_OnLine # NB_ORA_CLIENT=SAC0977 # # --------------------------------------------------------------------------- # Verifica usuario que esta executando o script # --------------------------------------------------------------------------- CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1` # --------------------------------------------------------------------------- # Cria arquivo de log # --------------------------------------------------------------------------- DATA=`date +%d%m%Y_%H%M` RMAN_LOG_FILE=${0}.$DATA.out find . -name "*.out" -mtime +30 -exec rm {} \; #if [ -f "$RMAN_LOG_FILE" ] #then # rm -f "$RMAN_LOG_FILE" #fi echo >> $RMAN_LOG_FILE chmod 666 $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== started on `date` ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # Seta variaveis de ambiente Oracle e variaveis enviadas pelo NetBackup # --------------------------------------------------------------------------- ORACLE_HOME=/oracle/app/oracle/product/10.2.0 export ORACLE_HOME # Nome do BD ORACLE_SID=ac051 export ORACLE_SID ORACLE_USER=oracle RMAN=$ORACLE_HOME/bin/rman echo >> $RMAN_LOG_FILE echo "RMAN: $RMAN" >> $RMAN_LOG_FILE echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE echo "ORACLE_HOME: $ORACLE_HOME" >> $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_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_CLIENT: $NB_ORA_CLIENT" >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE # --------------------------------------------------------------------------- # schedule type is BACKUP_TYPE is # ---------------- -------------- # Automatic Full INCREMENTAL LEVEL=0 # Automatic Differential Incremental INCREMENTAL LEVEL=1 # ------------------------------------------------------------------------------------ # Monta script de backup RMAN # Dependendo do valor das variaveis NB_ORA_FULL e NB_ORA_INCR (passada pelo NetBackup) # sera feito backup full ou incremental # Apos o backup full ou incremental e executado o backup de archives com remocao # ------------------------------------------------------------------------------------ if [ "$NB_ORA_FULL" = "1" ] then # # Monta script para backup Full echo "Backup Full requisitado" >> $RMAN_LOG_FILE CMD_STR="ORACLE_HOME=$ORACLE_HOME export ORACLE_HOME ORACLE_SID=$ORACLE_SID export ORACLE_SID $RMAN target / catalog /@rman_cat msglog $RMAN_LOG_FILE append << EOF RUN { SQL \"alter session set nls_date_format=''yyyy-mm-dd-hh24-mi-ss''\"; ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE'; SEND 'NB_ORA_SERV=${NB_ORA_SERV}, NB_ORA_CLIENT=${NB_ORA_CLIENT}, NB_ORA_POLICY=${NB_ORA_POLICY}'; EXECUTE SCRIPT bkp_full; EXECUTE SCRIPT bkp_archives_del; } EOF " elif [ "$NB_ORA_INCR" = "1" ] then echo "Backup Incremental requisitado" >> $RMAN_LOG_FILE CMD_STR="ORACLE_HOME=$ORACLE_HOME export ORACLE_HOME ORACLE_SID=$ORACLE_SID export ORACLE_SID $RMAN target / catalog /@rman_cat msglog $RMAN_LOG_FILE append << EOF RUN { SQL \"alter session set nls_date_format=''yyyy-mm-dd-hh24-mi-ss''\"; ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE'; SEND 'NB_ORA_SERV=${NB_ORA_SERV}, NB_ORA_CLIENT=${NB_ORA_CLIENT}, NB_ORA_POLICY=${NB_ORA_POLICY}'; EXECUTE SCRIPT bkp_incremental; EXECUTE SCRIPT bkp_archives_del; } EOF " elif [ "$BACKUP_TYPE" = "" ] then echo "Parametro que informa se Backup Full ou Incremental nao foi passado pelo NetBackup" >> $RMAN_LOG_FILE fi # --------------------------------------------------------------------------- # Execucao do backup # --------------------------------------------------------------------------- if [ "$CUSER" = "root" ] then echo ==== Execucao do script on `date` ==== >> $RMAN_LOG_FILE su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? else echo ==== Execucao do script on `date` ==== >> $RMAN_LOG_FILE /usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? fi ERROR=`grep -i "ERROR" $RMAN_LOG_FILE | wc -l` # --------------------------------------------------------------------------- # Status do backup # --------------------------------------------------------------------------- if [ "$RSTAT" -eq "0" ] && [ "$ERROR" -eq "0" ] then LOGMSG="Ended successfully" else LOGMSG="Ended in error" echo "Ocorreu erro durante o backup de banco de dados" | mailx -s "RMAN Backup - Erro $ORACLE_SID $NB_ORA_CLIENT" xxx@xxx.com.br,xxx@xx.com.br fi echo >> $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE exit $RSTAT