#!/usr/bin/ksh # # RMAN Log backup # Written for HCL / Nokia # v1.1 - James Pattinson - October 2025 # # usage: rman_logs.ksh get_script_dir() { src="$0" dir=$(cd -P "$(dirname "$src")" >/dev/null 2>&1 && pwd) echo "$dir" } MYDIR=$(get_script_dir) export ORACLE_SID=$1 #. $HOME/.profile export ORAENV_ASK=NO export ORACLE_SID=$1 . oraenv export ORAENV_ASK=YES . $MYDIR/rubrik.conf . $MYDIR/oracle_funcs.ksh usage() { echo "Usage: $0 ]" 1>&2 exit 1 } if [ -z "${ORACLE_SID}" ]; then usage fi 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 # Default RMAN channels per mount if not set RMAN_CHANNELS_PER_MOUNT=${RMAN_CHANNELS_PER_MOUNT:-1} total_channels=$(expr $numChannels \* $RMAN_CHANNELS_PER_MOUNT) if [ $total_channels -eq 1 ]; then allocate="allocate channel 'ch1' device type disk format '$MOUNTPOINT/%U';" release="release channel ch1;" channel0="$MOUNTPOINT" else allocate="" release="" i=0 while [ $i -lt $numChannels ]; do j=0 while [ $j -lt $RMAN_CHANNELS_PER_MOUNT ]; do suffix=$(echo $j | tr '0123456789' 'abcdefghijklmnopqrstuvwxyz') allocate="$allocate allocate channel 'c${i}${suffix}' device type disk format '$MOUNTPOINT/c$i/%U';" release="$release release channel c${i}${suffix};" j=$(expr $j + 1) done i=$(expr $i + 1) done channel0="$MOUNTPOINT/c0" fi # RMAN Part Here ############################################################################### rman nocatalog log $RMAN_LOG append > /dev/null </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 <