#!/bin/bash # # Fetch recoverable ranges for a given Oracle DB # v0.2 - James Pattinson - August 2021 # v0.3 - Gerald Bailat - november 2024 - Add the option -R to see the recoverable range of the replicated backupfile # # usage: oracle_get_rr.sh [-h |local] SCRIPT=`basename $0` echo "script ${SCRIPT}" MYDIR="$(dirname "$(realpath "$0")")" # source $MYDIR/rbk_api.conf source $MYDIR/oracle_funcs.sh usage() { echo "Usage: $0 [-h |local] " 1>&2; exit 1; } while getopts "h:" o; do case "${o}" in h) RBK_HOST=${OPTARG} RBK_HOST_TXT="${RBK_HOST}" if [ "${RBK_HOST}" = "local" ] ; then echo " The script will look for the “recoverable range” from the system where the script is executed" RBK_HOST="" fi ;; *) usage ;; esac done shift $((OPTIND-1)) RBK_SID=$1 if [ -z "${RBK_SID}" ]; then usage exit 1 fi if [ `ps -ef | grep ora_pmon_$RBK_SID | grep -v " grep " | wc -l` -eq 0 ]; then #echo "Sid: $db is down, `hostname -s` " ROLE="unknown" STATUS=down else #echo "Sid: $db is up, `hostname -s` " if [ `ps -ef | grep ora_arc[0-9]_$RBK_SID | grep -v " grep " | wc -l` -eq 0 ]; then STATUS="no-/mnt" else STATUS=up fi if [ `ps -ef | grep ora_mrp[0-9]_$RBK_SID | grep -v " grep " | wc -l` -eq 0 ]; then #echo "Sid: $db is stby, `hostname -s` " ROLE=prim else #echo "Sid: $db is prim, `hostname -s` " ROLE=stby fi fi echo Connecting to Rubrik with IP $RUBRIK_IP ret=0 # API call to list Oracle DBs find_database echo Fetching Recoverable Ranges for $RBK_SID on $RBK_HOST # API call to get the recoverable range ENDPOINT="https://$RUBRIK_IP/api/internal/oracle/db/$db_id/recoverable_range" http_response=$(curl -s -k -o /tmp/rbkresponse.$$ -w "%{http_code}" -X GET $ENDPOINT -H "accept: application/json" -H "Authorization: Bearer $AUTH_TOKEN") # echo "ret $ret" echo -e "SID\t Hostname Status Role Start Time\t\t\tEnd Time\t\t\tStatus" echo -e "-------- -------- ------- ------- ----------\t\t\t--------\t\t\t------" if [ $ret -ne 0 ] ; then RESULT_GET=" No_date No_date KO" if [ ! -z "${INFO_RR_PROBLEM}" ] ; then echo "${INFO_RR_PROBLEM}" fi else RESULT_GET=`cat /tmp/rbkresponse.$$ | jq -r '.data[]' | jq -r ' "\(.beginTime)\t\(.endTime)\t\(.status)"'` if [ -z "${RESULT_GET}" ] ; then RESULT_GET=" No_date No_date KO" if [ ! -z "${INFO_RR_PROBLEM}" ] ; then echo "${INFO_RR_PROBLEM}" fi fi fi echo "${RESULT_GET}" | sed "s/^/${RBK_SID} `hostname -s` ${STATUS} ${ROLE} /" | awk '{printf "%-10s %-13s %-7s %-7s %-30s %-31s %-12s\n" ,$1,$2,$3,$4,$5,$6,$7}' # cleanup