Sample script for performing out-of-place restore using DB2 Command Line


#!/usr/bin/ksh

echo "
This Script should run on Target Machine and Target DB2 Instance
"

#------------------ Need to define Variables  -------------------------------

Source_Client=albany                     #define variable
Source_DB2_Instance=db2inst1             #define variable
Source_DB_Name=GALAXY                    #define variable
Target_Client=ernie                      #define variable
Target_DB2_Instance=db2inst2             #define variable
Target_DB_Name=TESTDB                    #define variable
Target_CV_InstanceName=Instance001       #define variable
DB2_ON_PATH="$HOME/database"             #define variable
DBPATH="$HOME/database"                  #define variable
Source_DB2_BImage=20090724140142         #define variable
LOAD=/opt/simpana/Base/libDb2Sbt.so      #define variable


#------------------ Assigning Variable in proper place ----------------------------------------

CvSrcClientName=${Source_Client}
CvSrcDB2InstanceName=${Source_DB2_Instance}
CvClientName=${Target_Client}
CvInstanceName=${Target_CV_InstanceName}
CvSrcDbName=${Source_DB_Name}
TargetDB=${Target_DB_Name}
bakupimage=${Source_DB2_BImage}
onpath="'${DB2_ON_PATH}'"
DBPATH="'${DBPATH}'"
load="'${LOAD}'"

VENDOROPT="'CvSrcClientName=$CvSrcClientName,CvSrcDB2InstanceName=$CvSrcDB2InstanceName,CvClientName=$CvClientName,CvInstanceName=$CvInstanceName'"

LOGARCHOPT1="'CvSrcClientName=$CvSrcClientName,CvSrcDB2InstanceName=$CvSrcDB2InstanceName,CvClientName=$CvClientName,CvInstanceName=$CvInstanceName'"

LOGARCHMETH1="'VENDOR:${LOAD}'"

DB2="db2 -v"
export CvSrcClientName CvSrcDB2InstanceName CvClientName CvInstanceName CvSrcDbName TargetDB bakupimage onpath DBPATH load VENDOROPT LOGARCHOPT1 LOGARCHMETH1 DB2

if [ ! -f ${LOAD} ];then echo "";echo "DB2 Load library not found ";echo "";exit;fi
if [ ! -d ${DB2_ON_PATH} ]; then mkdir -p ${DB2_ON_PATH};fi
if [ ! -d ${DBPATH} ]; then mkdir -p ${DBPATH};fi

#---------------------------- Displaying Variables ------------------------------------

echo "

Source Client -----------------> ${CvSrcClientName}
Source DB2 Instance -----------> ${CvSrcDB2InstanceName}
Source DB Name ----------------> ${CvSrcDbName}
Target Client Name ------------> ${CvClientName}
Target DB2 Instance -----------> ${Target_DB2_Instance}
Target DB Name ----------------> ${Target_DB_Name}
Target CV Instance Name -------> ${CvInstanceName}
DB2 DB ON PATH ----------------> ${onpath}
DB2 DB HOME PATH --------------> ${DBPATH}
Source DB2 Backup Image -------> ${Source_DB2_BImage}
Simpana DB2 SBT Library -------> ${load}
DB2 VENDOROPT -----------------> ${VENDOROPT}
DB2 LOGARCHOPT1 ---------------> ${LOGARCHOPT1}
DB2 LOGARCHMETH1 --------------> ${LOGARCHMETH1}

"
#----------- First Creating Target DB2 Database --------------------------------------------

${DB2} drop db ${TargetDB}
${DB2} create db ${TargetDB} AUTOMATIC STORAGE YES ON ${DBPATH} ALIAS ${TargetDB}

#------------- Updating Target Database Configuration parameter VENDOROPT ------------

${DB2} update db cfg for ${TargetDB} \
using VENDOROPT "${VENDOROPT}"

#-------------------------- Performing Restore --------------------------------------

${DB2} restore db ${CvSrcDbName} incremental automatic \
load ${load} \
taken at $bakupimage \
on ${onpath} \
DBPATH ON ${DBPATH} \
into ${TargetDB} \
REDIRECT \
without prompting

${DB2} RESTORE DATABASE ${CvSrcDbName} CONTINUE;

#------------Updating Target Database Configuration parameter LOGARCHOPT1 ------------

${DB2} update db cfg for ${TargetDB} \
using VENDOROPT "${VENDOROPT}"

${DB2} update db cfg for ${TargetDB} \
using LOGARCHOPT1 ${LOGARCHOPT1}

${DB2} update db cfg for ${TargetDB} \
using LOGARCHMETH1 ${LOGARCHMETH1}


#-------------------- Performing Rollforward -----------------------------------------

${DB2} rollforward db ${TargetDB} to end of logs and stop