Convert to use ksh
This commit is contained in:
146
rman_logs.ksh
Executable file
146
rman_logs.ksh
Executable file
@@ -0,0 +1,146 @@
|
||||
#!/usr/bin/ksh
|
||||
#
|
||||
# RMAN Log backup
|
||||
# Written for HCL / Nokia
|
||||
# v1.1 - James Pattinson - October 2025
|
||||
#
|
||||
# usage: rman_logs.ksh <ORACLE_SID>
|
||||
|
||||
get_script_dir() {
|
||||
# Portable way to get script directory for Linux and HP/UX (ksh compatible)
|
||||
src="$0"
|
||||
while [ -h "$src" ]; do
|
||||
dir=$(cd -P $(dirname "$src") >/dev/null 2>&1 && pwd)
|
||||
src=$(readlink "$src")
|
||||
case $src in
|
||||
/*) ;; # absolute path
|
||||
*) src="$dir/$src";;
|
||||
esac
|
||||
done
|
||||
cd -P $(dirname "$src") >/dev/null 2>&1 && pwd
|
||||
}
|
||||
MYDIR=$(get_script_dir)
|
||||
export ORACLE_SID=$1
|
||||
|
||||
#. $HOME/.profile
|
||||
|
||||
export ORAENV_ASK=NO
|
||||
export ORACLE_SID=$1
|
||||
|
||||
. oraenv
|
||||
|
||||
export ORAENV_ASK=YES
|
||||
|
||||
. $MYDIR/rbk_api.conf
|
||||
. $MYDIR/oracle_funcs.ksh
|
||||
|
||||
#ORACLE_SID=$1
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 <DBNAME>]" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "${ORACLE_SID}" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
#ORAENV_ASK=NO
|
||||
#. oraenv
|
||||
|
||||
export NLS_DATE_FORMAT='mm-dd-yyyy hh24:mi:ss'
|
||||
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
|
||||
|
||||
mkdir -p $RMAN_LOG_DIR/$ORACLE_SID/
|
||||
RMAN_LOG=$RMAN_LOG_DIR/$ORACLE_SID/rman_${ORACLE_SID}_LOG_$(date +%d%m%y).log
|
||||
|
||||
get_log_mv
|
||||
open_mv
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo ERROR: Unable to open MV, aborting
|
||||
exit_with_error
|
||||
fi
|
||||
|
||||
MOUNTPOINT=$MOUNTPOINT_PREFIX/$ORACLE_SID/logs
|
||||
|
||||
# Disk space check
|
||||
dusage=$(df -Ph | egrep "$MOUNTPOINT" | sed s/%//g | awk -v spaceWarn=$MV_SPACE_WARN '{ if($5 >= spaceWarn) print $0;}')
|
||||
if [ "$dusage" != "" ]; then
|
||||
echo "WARNING: Disk Space Alert - sending email"
|
||||
echo "$dusage" | mailx -s "WARNING: Rubrik MV Disk Space Alert On $(hostname) at $(date)" $ALERT_EMAILS
|
||||
else
|
||||
echo "INFO: Rubrik MV Disk usage is under threshold of ${MV_SPACE_WARN}%"
|
||||
fi
|
||||
|
||||
echo Running RMAN with log to $RMAN_LOG
|
||||
|
||||
allocate=""
|
||||
release=""
|
||||
i=0
|
||||
while [ $i -lt $numChannels ]; do
|
||||
allocate="$allocate allocate channel 'c$i' device type disk format '$MOUNTPOINT/c$i/%U';"
|
||||
release="$release release channel c$i;"
|
||||
i=$(expr $i + 1)
|
||||
done
|
||||
channel0="$MOUNTPOINT/c0"
|
||||
|
||||
|
||||
# RMAN Part Here
|
||||
###############################################################################
|
||||
rman nocatalog log $RMAN_LOG append > /dev/null <<EOF
|
||||
connect target /
|
||||
set echo on;
|
||||
show all;
|
||||
crosscheck backup;
|
||||
run {
|
||||
set controlfile autobackup format for device type disk to '$channel0/cf_%F';
|
||||
$allocate
|
||||
backup archivelog all not backed up 1 times tag 'rubrik_pit_logs';
|
||||
$release
|
||||
}
|
||||
allocate channel for maintenance device type disk;
|
||||
delete noprompt backup of archivelog all completed before 'sysdate-2' tag rubrik_pit_logs;
|
||||
release channel;
|
||||
EOF
|
||||
###############################################################################
|
||||
|
||||
rmanStatus=$?
|
||||
|
||||
if [ $rmanStatus -ne 0 ]; then
|
||||
echo "WARNING: RMAN Log backup exited with Non-zero status $rmanStatus. Emailing log"
|
||||
cat $RMAN_LOG | mailx -s "RMAN Log backup Failed on ${HOST} for ${ORACLE_SID}" $ALERT_EMAILS
|
||||
elif [ $EMAIL_SUCCESS -eq 1 ]; then
|
||||
echo "SUCCESS: RMAN Log backup exited with zero status"
|
||||
echo "RMAN job finished with Zero status. Note that this does not guarantee the contents of the backup." | mailx -s "SUCCESS: RMAN Log backup exited with zero status on ${HOST} for ${ORACLE_SID}" $ALERT_EMAILS
|
||||
fi
|
||||
|
||||
# Change permission of backup files to enable alternate host restore
|
||||
find $MOUNTPOINT -type f -exec chmod 644 {} + 2>/dev/null
|
||||
|
||||
close_mv
|
||||
|
||||
|
||||
if [ $HOSTLOGRET -gt 0 ]; then
|
||||
|
||||
echo "Starting post-backup RMAN log purge"
|
||||
|
||||
# Remove archivelogs from host after backup
|
||||
###############################################################################
|
||||
rman nocatalog log $RMAN_LOG append > /dev/null <<EOF
|
||||
connect target /
|
||||
set echo on;
|
||||
run {
|
||||
delete noprompt archivelog until time 'sysdate-$HOSTLOGRET/24' backed up 1 times to device type disk;
|
||||
}
|
||||
EOF
|
||||
###############################################################################
|
||||
|
||||
rmanStatus=$?
|
||||
|
||||
if [ $rmanStatus -ne 0 ]; then
|
||||
echo "WARNING: RMAN purge exited with Non-zero status $rmanStatus. Emailing log"
|
||||
cat $RMAN_LOG | mailx -s "RMAN purge on ${HOST} for ${ORACLE_SID} " $ALERT_EMAILS
|
||||
fi
|
||||
|
||||
fi
|
||||
Reference in New Issue
Block a user