Druva provides template scripts that you can use to back up databases on the Oracle RMAN Database host. The scripts are listed as follows:
oracle_oem_full_backup.txt: This template script performs a full backup of the databases on the Oracle RMAN Database hosts.
oracle_oem_archivelog_backup.txt: This template script backs up archivelog files on the Oracle RMAN Database host.
The scripts, oracle_oem_full_backup.txt
and oracle_oem_archivelog_backup.txt
are used on the OEM console while configuring the backup job from the OEM Job Engine.
oracle_oem_full_backup.txt
This script performs a full backup of the databases on the Oracle RMAN Database host. You may use your own RMAN block, provided that you do not change the ${RMANBACKUP_MOUNTPOINT_FULL} variable. The value of this variable indicates the path on the Oracle RMAN Database host, which is mounted on the Phoenix Backup Store. This path is critical as the backups are performed on the Phoenix Backup Store’s mount point.
001#Update ORACLE_SID for the database. Example: ORACLE_SID=PROD002export ORACLE_SID=<>003#Update ORACLE_BASE for your database host server. E.g. ORACLE_BASE=/u01/app/oracle004export ORACLE_BASE=<>005#Update ORACLE_HOME for the database. Example: ORACLE_HOME=/opt/oracle/product/18c/dbhome_1006export ORACLE_HOME=<>007#Update PBS IP inside the quotes. Example: BACKUP_STORE_IP="172.xx.xx.xx"008export BACKUP_STORE_IP="<>"009#Update PBS Backup Mount name inside the quotes. Example: BACKUP_MOUNT="PRODMount"010export BACKUP_MOUNT="<>"011echo "Pre-Script execution is getting started"012if [[ -z "${ORACLE_HOME}" ]];013then014echo "Environment variable ORACLE_HOME not set... exiting"015exit 1016fi017if [[ -z "${ORACLE_SID}" ]];018then019echo "Environment variable ORACLE_SID not set... exiting"020exit 1021fi022SID=${ORACLE_SID}023echo "Validating backup request"024validate_resp=$(curl -X GET http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/1.2/backup 2> /dev/null)025if [ $? -ne 0 ];026then027echo "Request to validate phoenix backup failed... exiting"028echo "Response from Phoenix Backup Store: "$validate_resp029exit 1030fi031VALIDATE_ERROR_CODE=$(echo $validate_resp|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)032if [ $VALIDATE_ERROR_CODE -ne 0 ];033then034echo "Response from Phoenix Backup Store: "$validate_resp035echo "Request to validate Phoenix backup failed... exiting"036exit 1037fi038# Sample output format039# {"error_code":0,"error_msg":"","result":{"is_reached_max_snapshots":false,"mount_name":"m2"}}040export IS_REACHED_MAX_SNAPSHOTS=$(echo $validate_resp|awk -F "is_reached_max_snapshots" '{print $2}'|cut -d ',' -f1 |cut -d ':' -f2)041if [ $IS_REACHED_MAX_SNAPSHOTS == "false" ];042then043echo "Validation for phoenix backup succeeded"044else045echo "Response from Phoenix Backup Store: "$validate_resp046echo "Validation for phoenix backup failed... exiting"047exit 1048fi049echo "Notifying Phoenix to start backup - Phoenix Backup Store=$BACKUP_STORE_IP mount name=$BACKUP_MOUNT"050export res=$(curl -X POST http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/backup 2> /dev/null)051if [ $? -ne 0 ];052then053echo "Request to start phoenix backup failed... exiting"054echo "Response from Phoenix Backup Store: "$res055exit 1056fi057# Sample output format058# {"error_code":4295622665,"error_msg":"Backup mount does not exist on Export Service.","result":{"mount_name":"mount4","mount_path":""}}059ERROR_CODE=$(echo $res|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)060if [ $ERROR_CODE -ne 0 ];061then062echo "Response from Phoenix Backup Store: "$res063echo "Request to start Phoenix backup failed... exiting"064exit 1065fi066export REMOTE_MOUNTPOINT=$BACKUP_STORE_IP:$(echo $res|awk -F "mount_path" '{print $2}'|cut -d '"' -f3)067export RMANBACKUP_MOUNTPOINT=$(grep "^$REMOTE_MOUNTPOINT" /etc/fstab| sed 's/\s\+/ /g' |cut -d ' ' -f2)068if [ -z "$RMANBACKUP_MOUNTPOINT" ];069then070echo "Entry for Phoenix Backup Store mount not found in /etc/fstab... exiting"071exit 1072fi073export ACTUAL_MOUNTPOINT=$(mount|grep "^$REMOTE_MOUNTPOINT"|sed 's/\s\+/ /g' |cut -d " " -f3 2> /dev/null)074if [ -z "$ACTUAL_MOUNTPOINT" ];075then076mount $RMANBACKUP_MOUNTPOINT 2> /dev/null077if [ $? -ne 0 ];078then079 echo "Unable to mount $RMANBACKUP_MOUNTPOINT... exiting"080 exit 1081fi082else083export RMANBACKUP_MOUNTPOIN=$ACTUAL_MOUNTPOINT084fi085export PATH=$ORACLE_HOME/bin:$PATH086echo "Creating Dir $RMANBACKUP_MOUNTPOINT/$SID'/full'"087if [ ! -e $RMANBACKUP_MOUNTPOINT/$SID'/full' ]088then089mkdir -p $RMANBACKUP_MOUNTPOINT/$SID'/full'090if [ $? -eq 0 ];091then092 echo "Created directory for full backup $RMANBACKUP_MOUNTPOINT/$SID/full"093else094 echo "Oracle user does not have permission for $RMANBACKUP_MOUNTPOINT directory... exiting"095 exit 1096fi097elif [ ! -d $RMANBACKUP_MOUNTPOINT/${SID}'/full' ];098then099echo "$RMANBACKUP_MOUNTPOINT is not a directory... exiting"100exit 1101fi102#Creating Archivelog Directory103if [ ! -e $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs' ]104then105mkdir -p $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs'106if [ $? -eq 0 ];107then108 echo "Created directory for archivelogs backup $RMANBACKUP_MOUNTPOINT/$SID/archivelogs"109else110 echo "Oracle user does not have permission for $RMANBACKUP_MOUNTPOINT directory... exiting"111 exit 1112fi113elif [ ! -d $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs' ];114then115echo "$RMANBACKUP_MOUNTPOINT is not a directory... exiting"116exit 1117fi118 119export LOG_FILE_DIR=$RMANBACKUP_MOUNTPOINT/'_workspace/RMAN_Logs'120echo "Creating Log File Dir: =$RMANBACKUP_MOUNTPOINT'/_workspace/RMAN_Logs'"121if [ ! -e $LOG_FILE_DIR ]122then123mkdir -p $LOG_FILE_DIR124if [ $? -eq 0 ];125then126 echo "Created log directory for oracle backup $LOG_FILE_DIR"127else128 echo "Oracle user does not have permission for $LOG_FILE_DIR directory... exiting"129 exit 1130fi131fi132RMANBACKUP_MOUNTPOINT_FULL=$RMANBACKUP_MOUNTPOINT/$SID133echo -n >$LOG_FILE_DIR'/rman_full_backup.log'134touch $RMANBACKUP_MOUNTPOINT/_workspace/135if [ $? -ne 0 ];136then137echo "$RMANBACKUP_MOUNTPOINT directory is not writable.. exiting"138exit 1139fi140#Checking if any .lock file is present and deleting the same if the PID is NOT running.141export is_lock_file_present=`find ${RMANBACKUP_MOUNTPOINT} -type f -name ".RMAN_FULL_lock_*"|wc -l `142if [[ ${is_lock_file_present} -ne 0 ]]143then144 for _lock_file in `find ${RMANBACKUP_MOUNTPOINT} -type f -name ".RMAN_FULL_lock_*" | xargs `145 do146 export _pid=`echo ${_lock_file}|cut -d"_" -f4`147 export is_pid_proc_running=`ps -ef|grep ${_pid}|grep -v grep | wc -l`148 if [[ ${is_pid_proc_running} -ne 0 ]]149 then150 echo "[INFO] Full backup Lock File: ${_lock_file} is present and PID is active"151 echo "[ERROR] One Full backup is already in progress with process ${_pid}. Exiting current backup"152 exit 1153 else154 echo "[INFO] Full backup Lock File: ${_lock_file} is present and PID is NOT active"155 echo "Deleting ${_lock_file}"156 rm ${_lock_file}157 if [ -e ${_lock_file} ]158 then159 echo "ERROR deleting file ${_lock_file}"160 fi161 fi162 done163fi164# Creating a .lock file to represnt current active full/diff backup.165export file_stamp=`date | sed -e 's/ /_/g'`166export PID=`echo $$`167export LOCK_FILE=`echo ${RMANBACKUP_MOUNTPOINT}/.RMAN_FULL_lock_${PID}_${file_stamp}`168echo -n > ${LOCK_FILE}169if [ -e ${LOCK_FILE} ]170then171 echo "[INFO] Lock file created: ${LOCK_FILE}"172else173 echo "Error creating lock file: ${LOCK_FILE}"174 echo "[ERROR] Backup will now stop"175 exit 3176fi177#Calling Start RMAN Backup178export res_rmanbackup=$(curl -X POST http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/${SID}/full/rmanbackup 2> /dev/null)179if [ $? -ne 0 ];180then181echo "Request to start phoenix backup failed... exiting"182echo "Response from Phoenix Backup Store: "$res_rmanbackup183exit 1184fi185echo "Response RMAN Backup: ${res_rmanbackup}"186export SNAPSHOT_NAME=`echo $res_rmanbackup|awk -F "snap_name" '{print $2}'|cut -d '"' -f3`187if [ -z "$SNAPSHOT_NAME" ];188then189echo "Failed to get Snapshot name. Exiting. Please check Export Service Logs in PBS"190exit 1191fi192echo "Snapshot to be created ${SNAPSHOT_NAME}"193echo -n >$LOG_FILE_DIR'/rman_full_backup_'${SNAPSHOT_NAME}_${ORACLE_SID}'.log'194export RMAN_LOGFILE=$LOG_FILE_DIR'/rman_full_backup_'${SNAPSHOT_NAME}_${ORACLE_SID}'.log'195echo "RMAN Logfile: ${RMAN_LOGFILE}"196 197echo "Starting with RMAN backup. RMAN Log File: $RMAN_LOGFILE"198PARALLELISM=1199rman log=$RMAN_LOGFILE 2> /dev/null << EOF200connect target /201set echo on;202configure backup optimization on;203configure controlfile autobackup on;204configure device type disk parallelism $PARALLELISM BACKUP TYPE TO COPY;205configure datafile backup copies for device type disk to 1;206configure archivelog backup copies for device type disk to 1;207configure channel device type disk format '${RMANBACKUP_MOUNTPOINT_FULL}/full/datafile_%%U.bkp';208configure controlfile autobackup format for device type disk to '${RMANBACKUP_MOUNTPOINT_FULL}/full/full_controlfile_%%d_%%F.bkp';209run210{211sql 'alter system archive log current';212backup incremental level 1 for recover of copy with tag 'phoenix_oracle_backup' database;213recover copy of database with tag 'phoenix_oracle_backup';214sql 'alter system archive log current';215backup as backupset format '${RMANBACKUP_MOUNTPOINT_FULL}/archivelogs/%%d_%%h_%%e_%%s_%%t.arc' archivelog all not backed up;216#Force is to ignore I/O errors217delete noprompt obsolete device type disk;218delete force NOPROMPT expired copy;219delete force NOPROMPT expired backup;220crosscheck backup;221crosscheck copy;222}223configure backup optimization clear;224configure controlfile autobackup clear;225exit226EOF227export RMAN_EXIT_STATUS=$?228if [ $RMAN_EXIT_STATUS -ne 0 ];229then230echo ""231echo "rman failed with status $RMAN_EXIT_STATUS.. exiting"232rm ${LOCK_FILE}233if [ -e ${LOCK_FILE} ]234then235 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"236else237 dt=`date | sed -e 's/ /_/g'`238 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "239fi240exit 1241fi242 243echo "Triggering backup operation"244echo "Notifying Phoenix to upload RMAN Logs"245echo "RMAN log location: $LOG_FILE_DIR/rman_full_backup_${SNAPSHOT_NAME}_${ORACLE_SID}.log"246echo "Notifying Phoenix to upload RMAN Logs"247rman_uploadlog_res=$(curl -X POST -H "Content-Type: multipart/form-data" -F "file=@$LOG_FILE_DIR/rman_full_backup_${SNAPSHOT_NAME}_${ORACLE_SID}.log" -F mountpoint=$RMANBACKUP_MOUNTPOINT -F platform=linux http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/uploadlog 2> /dev/null)248if [ $? -ne 0 ];249then250echo "Request to send RMAN Logs failed..."251echo "Response from Phoenix Backup Store: "$rman_uploadlog_res252fi253rm ${LOCK_FILE}254if [ -e ${LOCK_FILE} ]255then256 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"257else258 dt=`date | sed -e 's/ /_/g'`259 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "260fi261echo "Notifying Phoenix to end backup"262export final_res=$(curl -X PUT http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/backup 2> /dev/null)263 264if [ $? -ne 0 ];265then266echo "Request to end phoenix backup failed... exiting"267echo "Response from Phoenix Backup Store: "$final_res268rm ${LOCK_FILE}269if [ -e ${LOCK_FILE} ]270then271 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"272else273 dt=`date | sed -e 's/ /_/g'`274 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "275fi276exit 5277fi278export ERROR_CODE=$(echo $final_res|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)279if [ $ERROR_CODE -ne 0 ];280then281echo "Response from Phoenix Backup Store: "$res282echo "Request to start Phoenix backup failed... exiting"283exit 7284fi285echo $final_res286echo "Exiting with successful status"
oracle_oem_archivelog_backup.txt
001#Update ORACLE_SID for the database. Example: ORACLE_SID=PROD002export ORACLE_SID=<>003#Update ORACLE_BASE for your database host server. E.g. ORACLE_BASE=/u01/app/oracle004export ORACLE_BASE=<>005#Update ORACLE_HOME for the database. Example: ORACLE_HOME=/opt/oracle/product/18c/dbhome_1006export ORACLE_HOME=<>007#Update PBS IP inside the quotes. Example: BACKUP_STORE_IP="172.xx.xx.xx"008export BACKUP_STORE_IP="<>"009#Update PBS Backup Mount name inside the quotes. Example: BACKUP_MOUNT="PRODMount"010export BACKUP_MOUNT="<>"011echo "Pre-Script execution is getting started"012if [[ -z "${ORACLE_HOME}" ]];013then014 echo "Environment variable ORACLE_HOME not set... exiting"015 exit 1016fi017if [[ -z "${ORACLE_SID}" ]];018then019 echo "Environment variable ORACLE_SID not set... exiting"020 exit 1021fi022SID=${ORACLE_SID}023echo "Validating backup request"024validate_resp=$(curl -X GET http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/1.2/backup 2> /dev/null)025if [ $? -ne 0 ];026then027 echo "Request to validate phoenix backup failed... exiting"028 echo "Response from Phoenix Backup Store: "$validate_resp029 exit 1030fi031VALIDATE_ERROR_CODE=$(echo $validate_resp|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)032if [ $VALIDATE_ERROR_CODE -ne 0 ];033then034 echo "Response from Phoenix Backup Store: "$validate_resp035 echo "Request to validate Phoenix backup failed... exiting"036 exit 1037fi038# Sample output format039# {"error_code":0,"error_msg":"","result":{"is_reached_max_snapshots":false,"mount_name":"m2"}}040export IS_REACHED_MAX_SNAPSHOTS=$(echo $validate_resp|awk -F "is_reached_max_snapshots" '{print $2}'|cut -d ',' -f1 |cut -d ':' -f2)041if [ $IS_REACHED_MAX_SNAPSHOTS == "false" ];042then043 echo "Validation for phoenix backup succeeded"044else045 echo "Response from Phoenix Backup Store: "$validate_resp046 echo "Validation for phoenix backup failed... exiting"047 exit 1048fi049echo "Notifying Phoenix to start backup - Phoenix Backup Store=$BACKUP_STORE_IP mount name=$BACKUP_MOUNT"050export res=$(curl -X POST http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/backup 2> /dev/null)051if [ $? -ne 0 ];052then053 echo "Request to start phoenix backup failed... exiting"054 echo "Response from Phoenix Backup Store: "$res055 exit 1056fi057# Sample output format058# {"error_code":4295622665,"error_msg":"Backup mount does not exist on Export Service.","result":{"mount_name":"mount4","mount_path":""}}059ERROR_CODE=$(echo $res|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)060if [ $ERROR_CODE -ne 0 ];061then062 echo "Response from Phoenix Backup Store: "$res063 echo "Request to start Phoenix backup failed... exiting"064 exit 1065fi066export REMOTE_MOUNTPOINT=$BACKUP_STORE_IP:$(echo $res|awk -F "mount_path" '{print $2}'|cut -d '"' -f3)067export RMANBACKUP_MOUNTPOINT=$(grep "^$REMOTE_MOUNTPOINT" /etc/fstab| sed 's/\s\+/ /g' |cut -d ' ' -f2)068if [ -z "$RMANBACKUP_MOUNTPOINT" ];069then070 echo "Entry for Phoenix Backup Store mount not found in /etc/fstab... exiting"071 exit 1072fi073export ACTUAL_MOUNTPOINT=$(mount|grep "^$REMOTE_MOUNTPOINT"|sed 's/\s\+/ /g' |cut -d " " -f3 2> /dev/null)074if [ -z "$ACTUAL_MOUNTPOINT" ];075then076 mount $RMANBACKUP_MOUNTPOINT 2> /dev/null077 if [ $? -ne 0 ];078 then079 echo "Unable to mount $RMANBACKUP_MOUNTPOINT... exiting"080 exit 1081 fi082else083 export RMANBACKUP_MOUNTPOIN=$ACTUAL_MOUNTPOINT084fi085export PATH=$ORACLE_HOME/bin:$PATH086echo "Creating Dir $RMANBACKUP_MOUNTPOINT/$SID'/full'"087if [ ! -e $RMANBACKUP_MOUNTPOINT/$SID'/full' ]088then089 mkdir -p $RMANBACKUP_MOUNTPOINT/$SID'/full'090 if [ $? -eq 0 ];091 then092 echo "Created directory for full backup $RMANBACKUP_MOUNTPOINT/$SID/full"093 else094 echo "Oracle user does not have permission for $RMANBACKUP_MOUNTPOINT directory... exiting"095 exit 1096 fi097elif [ ! -d $RMANBACKUP_MOUNTPOINT/${SID}'/full' ];098then099 echo "$RMANBACKUP_MOUNTPOINT is not a directory... exiting"100 exit 1101fi102#Creating Archivelog Directory103if [ ! -e $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs' ]104then105 mkdir -p $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs'106 if [ $? -eq 0 ];107 then108 echo "Created directory for archivelogs backup $RMANBACKUP_MOUNTPOINT/$SID/archivelogs"109 else110 echo "Oracle user does not have permission for $RMANBACKUP_MOUNTPOINT directory... exiting"111 exit 1112 fi113elif [ ! -d $RMANBACKUP_MOUNTPOINT/${SID}'/archivelogs' ];114then115 echo "$RMANBACKUP_MOUNTPOINT is not a directory... exiting"116 exit 1117fi118export LOG_FILE_DIR=$RMANBACKUP_MOUNTPOINT/'_workspace/RMAN_Logs'119echo "Creating Log File Dir: =$RMANBACKUP_MOUNTPOINT'/_workspace/RMAN_Logs'"120if [ ! -e $LOG_FILE_DIR ]121then122 mkdir -p $LOG_FILE_DIR123 if [ $? -eq 0 ];124 then125 echo "Created log directory for oracle backup $LOG_FILE_DIR"126 else127 echo "Oracle user does not have permission for $LOG_FILE_DIR directory... exiting"128 exit 1129 fi130fi131RMANBACKUP_MOUNTPOINT_FULL=$RMANBACKUP_MOUNTPOINT/$SID132echo -n >$LOG_FILE_DIR'/rman_archivelog_backup.log'133touch $RMANBACKUP_MOUNTPOINT/_workspace/134if [ $? -ne 0 ];135then136 echo "$RMANBACKUP_MOUNTPOINT directory is not writable.. exiting"137 exit 1138fi139#Checking if any .lock file is present and deleting the same if the PID is NOT running.140export is_lock_file_present=`find ${RMANBACKUP_MOUNTPOINT} -type f -name ".RMAN_FULL_lock_*"|wc -l `141if [[ ${is_lock_file_present} -ne 0 ]]142then143 for _lock_file in `find ${RMANBACKUP_MOUNTPOINT} -type f -name ".RMAN_FULL_lock_*" | xargs `144 do145 export _pid=`echo ${_lock_file}|cut -d"_" -f4`146 export is_pid_proc_running=`ps -ef|grep ${_pid}|grep -v grep | wc -l`147 if [[ ${is_pid_proc_running} -ne 0 ]]148 then149 echo "[INFO] Full backup Lock File: ${_lock_file} is present and PID is active"150 echo "[ERROR] One Full backup is already in progress with process ${_pid}. Exiting current backup"151 exit 1152 else153 echo "[INFO] Full backup Lock File: ${_lock_file} is present and PID is NOT active"154 echo "Deleting ${_lock_file}"155 rm ${_lock_file}156 if [ -e ${_lock_file} ]157 then158 echo "ERROR deleting file ${_lock_file}"159 fi160 fi161 done162fi163# Creating a .lock file to represnt current active full/diff backup.164export file_stamp=`date | sed -e 's/ /_/g'`165export PID=`echo $$`166export LOCK_FILE=`echo ${RMANBACKUP_MOUNTPOINT}/.RMAN_FULL_lock_${PID}_${file_stamp}`167echo -n > ${LOCK_FILE}168if [ -e ${LOCK_FILE} ]169then170 echo "[INFO] Lock file created: ${LOCK_FILE}"171else172 echo "Error creating lock file: ${LOCK_FILE}"173 echo "[ERROR] Backup will now stop"174 exit 3175fi176#Calling Start RMAN Backup177export res_rmanbackup=$(curl -X POST http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/${SID}/full/rmanbackup 2> /dev/null)178if [ $? -ne 0 ];179then180 echo "Request to start phoenix backup failed... exiting"181 echo "Response from Phoenix Backup Store: "$res_rmanbackup182 exit 1183fi184echo "Response RMAN Backup: ${res_rmanbackup}"185export SNAPSHOT_NAME=`echo $res_rmanbackup|awk -F "snap_name" '{print $2}'|cut -d '"' -f3`186if [ -z "$SNAPSHOT_NAME" ];187then188 echo "Failed to get Snapshot name. Exiting. Please check Export Service Logs in PBS"189 exit 1190fi191echo "Snapshot to be created ${SNAPSHOT_NAME}"192echo -n >$LOG_FILE_DIR'/rman_archivelog_backup_'${SNAPSHOT_NAME}_${ORACLE_SID}'.log'193export RMAN_LOGFILE=$LOG_FILE_DIR'/rman_archivelog_backup_'${SNAPSHOT_NAME}_${ORACLE_SID}'.log'194echo "RMAN Logfile: ${RMAN_LOGFILE}"195echo "Starting with RMAN backup. RMAN Log File: $RMAN_LOGFILE"196PARALLELISM=1197rman log=$RMAN_LOGFILE 2> /dev/null << EOF198connect target /199set echo on;200configure backup optimization on;201configure controlfile autobackup on;202configure device type disk parallelism ${PARALLELISM} BACKUP TYPE TO COPY;203configure datafile backup copies for device type disk to 1;204configure archivelog backup copies for device type disk to 1;205configure controlfile autobackup format for device type disk to '${RMANBACKUP_MOUNTPOINT_FULL}/archivelogs/arch_controlfile_%%d_%%F.bkp';206run207{208sql 'alter system archive log current';209backup as backupset format '${RMANBACKUP_MOUNTPOINT_FULL}/archivelogs/%%d_%%h_%%e_%%s_%%t.arc' archivelog all not backed up;210#Force is to ignore I/O errors211delete noprompt obsolete device type disk;212delete force NOPROMPT expired copy;213delete force NOPROMPT expired backup;214crosscheck backup;215crosscheck copy;216}217configure backup optimization clear;218configure controlfile autobackup clear;219exit220EOF221export RMAN_EXIT_STATUS=$?222if [ $RMAN_EXIT_STATUS -ne 0 ];223then224 echo ""225 echo "rman failed with status $RMAN_EXIT_STATUS.. exiting"226 rm ${LOCK_FILE}227 if [ -e ${LOCK_FILE} ]228 then229 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"230 else231 dt=`date | sed -e 's/ /_/g'`232 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "233 fi234 exit 1235fi236echo "Triggering Post-Script operations"237echo "Notifying Phoenix to upload RMAN Logs"238echo "RMAN log location: $LOG_FILE_DIR/rman_archivelog_backup_${SNAPSHOT_NAME}_${ORACLE_SID}.log"239echo "Notifying Phoenix to upload RMAN Logs"240rman_uploadlog_res=$(curl -X POST -H "Content-Type: multipart/form-data" -F "file=@$LOG_FILE_DIR/rman_archivelog_backup_${SNAPSHOT_NAME}_${ORACLE_SID}.log" -F mountpoint=$RMANBACKUP_MOUNTPOINT -F platform=linux http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/uploadlog 2> /dev/null)241if [ $? -ne 0 ];242then243 echo "Request to send RMAN Logs failed..."244 echo "Response from Phoenix Backup Store: "$rman_uploadlog_res245fi246rm ${LOCK_FILE}247if [ -e ${LOCK_FILE} ]248then249 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"250else251 dt=`date | sed -e 's/ /_/g'`252 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "253fi254echo "Notifying Phoenix to end backup"255export final_res=$(curl -X PUT http://$BACKUP_STORE_IP:9090/druva-phoenix/v1/mounts/$BACKUP_MOUNT/backup 2> /dev/null)256if [ $? -ne 0 ];257then258 echo "Request to end phoenix backup failed... exiting"259 echo "Response from Phoenix Backup Store: "$final_res260 rm ${LOCK_FILE}261 if [ -e ${LOCK_FILE} ]262 then263 echo "[ERROR] Could NOT delete Lock file: ${LOCK_FILE}"264 else265 dt=`date | sed -e 's/ /_/g'`266 echo "[INFO] Lock file deleted: ${LOCK_FILE} at ${dt} "267 fi268 exit 5269fi270export ERROR_CODE=$(echo $final_res|awk -F "error_code" '{print $2}' | cut -d ':' -f2|cut -d ',' -f1)271if [ $ERROR_CODE -ne 0 ];272then273 echo "Response from Phoenix Backup Store: "$res274 echo "Request to start Phoenix backup failed... exiting"275 exit 7276fi277echo $final_res278echo "Exiting with successful status"