Friday, October 15, 2010

abap program for Automatically save and circulate the offline redos to a remote server - local script

#!/bin/ksh
##############################################################################
# File Name: double_archieve.sh
#
# Usage: Run it from crontab 6 times an hour:
#
# su - SIDadm -c "/sapglobal/SHELL/ARCHIVE/doublearchive.sh" >/dev/null 2>&1
#
# Description: Usually the weekly backup tapes are transferred to a remote
# site, but the current offline redo logs are not. In case of a
# local disaster, rolling forward becomes impossibble, because
# both the database and the locally stored tapes get destroyed.
# This script provides a protection against this situation
# by automatically sending to and circulating the archive logs
# on a remote machine.
# This script runs on the local machine. It archives the offline
# redos locally and sends them to the remote machine as well.
# After sucessfuly archiving and copying them, it deletes
# the redo logs. Once a day it removes the old local brarchive
# logs too.
#
# Dependencies: Requires brarchive V4.5
# SIDadm has to exist on the remote host
# The local SIDadm has to be a trusted user on the remote machine
# A second brarchive par. file is needed for the remote copy on
# the local machine containing:
#
# archive_copy_dir = /oracle/SID/saparch
# remote_host = remote_host_name
##############################################################################
sid=SID
ORACLE_SID=$sid;export ORACLE_SID
ORACLE_HOME=/oracle/$sid;export ORACLE_HOME
#
brarchive=/sapmnt/$sid/exe/brarchive
prof=/oracle/$sid/dbs/remotecopy.sap
pwd=system/dbajan
tlog=/sapglobal/LOG/ARCHIVE/temp_log
plog=/sapglobal/LOG/ARCHIVE/permanent_log
lockfile=/sapglobal/LOG/ARCHIVE/doublearchive_lockfile
pat=successfully
#
hour_minute=`date "+%H%M"`
cleanup_time=1200
brarchive_log_dir=$ORACLE_HOME/saparch
remove_dayold=2
#
# Handle the signals
#
trap "clean_and_exit" 1 2 3 15 25
clean_and_exit ()
{
rm -f $lockfile
echo "Interrupt signal received - exiting" >> $plog
exit 0
}
#
# Check if another instance of double_archive is running
#
if [ -f $lockfile ]; then
echo "Already running - exiting" >> $plog
exit 0
fi
touch $lockfile
#
date >> $plog
#
# Archive the archive logs
#
a=`$brarchive -d disk -s -c -u $pwd|tee $tlog|grep $pat`
if [ "$a" = "" ] ; then
echo Failed to stop archive the remaining files, exiting >> $plog
rm -f $lockfile
exit 0
else
cat $tlog|grep "#SAVED"|awk '{printf(" Local archiving:%s\n",$2)}' >> $plog
fi
#
# Copy the archive logs to the remote machine
#
a=`$brarchive -d stage -s -c -u $pwd -p $prof|tee $tlog|grep $pat`
if [ "$a" = "" ] ; then
echo Failed to copy the arhive files to the remote machine, exiting >> $plog
rm -f $lockfile
exit 0
else
cat $tlog|grep "#SAVED"|awk '{printf(" Remote copy: %s\n",$2)}' >> $plog
fi
#
# Remove the archive logs that has been sucessfully archived and copied
#
a=`$brarchive -d disk -ds -c -u $pwd|tee $tlog|grep $pat`
if [ "$a" = "" ] ; then
echo Failed to delete the double saved archive logs, exiting >> $plog
rm -f $lockfile
exit 0
else
cat $tlog|grep BR015I|awk '{printf(" Deleting: %s\n",$6)}' >> $plog
fi
#
# Once a day remove the old brbackup log files
#
if [ $hour_minute = $cleanup_time ]; then
echo Removing the old brarchive log files >> $plog
find $brarchive_log_dir -name "*.dsv" -ctime +$remove_dayold -exec rm -f {} \;
find $brarchive_log_dir -name "*.sve" -ctime +$remove_dayold -exec rm -f {} \;
find $brarchive_log_dir -name "*.fst" -ctime +$remove_dayold -exec rm -f {} \;
fi
#
rm -f $lockfile

No comments:

Tutorials on SAP-ABAP

Adobe Interactive Forms Tutorials

Business Server Pages (BSP)

Userexits/BADIs

Web Dynpro for ABAP (Step by step procedure for web dynpro,Tutorials on Web Dynpro,)

ALV Tutorials

Blog Archive

goodsites