Created
September 13, 2016 23:07
-
-
Save sravanrox/7bbef3f96883334892c1dafb73c858ee to your computer and use it in GitHub Desktop.
Archive log backup for ASM DB's
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1` | |
DATE=`/bin/date +%m%d%Y%H%M%S` | |
DOW=`date +%A | tr -s '[:upper:]' '[:lower:]'` | |
HOME=/home/oracle/ | |
LOG=${HOME}/logs | |
sqlfile="${HOME}/check_rman.sql" | |
spoolfile="${HOME}/rman_list.txt" | |
ORACLE_SID=+ASM2 | |
ORACLE_HOME=/u01/app/11.2.0.4/grid | |
LD_LIBRARY_PATH_64=$ORACLE_HOME/lib | |
LD_LIBRARY_PATH=$ORACLE_HOME/lib | |
export ORACLE_SID | |
export ORACLE_HOME | |
export LD_LIBRARY_PATH_64 | |
export LD_LIBRARY_PATH | |
page_dba=xxx@gmail.com | |
echo "ORACLE_SID=$ORACLE_SID" | |
echo "ORACLE_HOME=$ORACLE_HOME" | |
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" | |
SQLPLUS=$ORACLE_HOME/bin/sqlplus | |
ORAENV_ASK=NO | |
echo "started `date`" | |
SIZE=`/home/oracle/shell/asm_arch_size_check.sh` | |
MB=`echo $SIZE | awk '{printf ("%s\n",$4) }'` | |
echo "$MB" | |
if [ $MB -ge 200000 ] | |
then | |
echo "Over the target of 200000 MB" | |
echo "start the Archive log backup" | |
else | |
echo "Did not hit the max usage specified. bye" | |
exit | |
fi | |
ORACLE_SID=dbname | |
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1 | |
export ORACLE_SID | |
export ORACLE_HOME | |
#----------------------------------------------------------------- | |
## Check DB online status | |
#---------------------------------------------------------------- | |
# | |
pchk=`ps -ef |grep pmon |grep $ORACLE_SID |grep -v grep |wc -l` | |
if [ $pchk -eq 0 ] | |
then | |
echo "DB is offline bye." | |
exit | |
fi | |
#----------------------------------------------------------------- | |
# Check for other active rman backup process | |
#----------------------------------------------------------------- | |
pcnt=`ps -ef |grep rman |grep -v grep |wc -l` | |
if [ $pcnt -gt 0 ] | |
then | |
echo "Other Rman process is running. bye" | |
exit | |
fi | |
echo "set echo off" > $sqlfile | |
echo "set pages 0" >> $sqlfile | |
echo "set feedback off" >> $sqlfile | |
echo "set lines 80" >> $sqlfile | |
echo "spool ${spoolfile}" >> $sqlfile | |
echo "select A.USERNAME,A.PROGRAM" >> $sqlfile | |
echo "from gv\$session A , gv\$sql B" >> $sqlfile | |
echo "where A.PREV_SQL_ID = B.sql_id and A.inst_id = B.inst_id" >> $sqlfile | |
echo "and A.program like 'rman%';" >> $sqlfile | |
echo "spool off" >> $sqlfile | |
echo "exit" >> $sqlfile | |
$SQLPLUS "/ as sysdba" @$sqlfile | |
chk=`cat $spoolfile | wc -l` | |
if [ $chk -gt 0 ] | |
then | |
echo "Other Rman process is running in other node. bye" | |
rm $spoolfile | |
rm $sqlfile | |
exit | |
fi | |
rm $spoolfile | |
rm $sqlfile | |
RMAN_LOG_FILE=${LOG}/dbname_archive_backup.sh.${DATE}.out | |
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 | |
ORACLE_USER=oracle | |
TARGET_CONNECT_STR=/ | |
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 | |
CMD_STR=" | |
$RMAN target / msglog $RMAN_LOG_FILE append << EOF | |
run | |
{ | |
#allocate channel ch01 type disk format '+RECO_DG'; | |
crosscheck archivelog all; | |
backup as compressed backupset archivelog all delete input; | |
#RELEASE CHANNEL ch01; | |
} | |
EOF | |
" | |
# Initiate the command string | |
echo "$CMD_STR" >> $RMAN_LOG_FILE | |
if [ "$CUSER" = "root" ] | |
then | |
echo " dbname archive backup job start at `/bin/date`" | mail -s " dbname archive Backup Notification" $page_dba | |
su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE | |
RSTAT=$? | |
else | |
echo " dbname archive backup job start at `/bin/date`" | mail -s " dbname archive Backup Notification" $page_dba | |
sh -c "$CMD_STR" >> $RMAN_LOG_FILE | |
RSTAT=$? | |
fi | |
# --------------------------------------------------------------------------- | |
# Log the completion of this script. | |
# --------------------------------------------------------------------------- | |
if [ "$RSTAT" = "0" ] | |
then | |
LOGMSG="ended successfully" | |
echo " dbname archive backup completed Successfully end`/bin/date`" | mail -s " dbname archive END Backup Notification: SUCCESS" $page_dba | |
else | |
echo " dbname archive backup Failed please contact DBA immediately `/bin/date`" | mail -s " dbname archive END Backup Notification: FAILED" $page_dba | |
LOGMSG="ended in error" | |
fi | |
echo >> $RMAN_LOG_FILE | |
echo Script $0 >> $RMAN_LOG_FILE | |
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE | |
echo >> $RMAN_LOG_FILE | |
echo "Sync with recovery catalog" | |
$RMAN target / catalog user/password@catalog msglog $RMAN_LOG_FILE append << EOF | |
resync catalog; | |
EOF | |
exit $RSTAT |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment