111 lines
2.4 KiB
Bash
Executable File
111 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/ksh
|
|
#
|
|
# Open and Close MV using API call to CDM
|
|
# Written for AvonHCL / Nokia
|
|
# v1.0 - James Pattinson - October 2025
|
|
#
|
|
# usage: rubrik_mv_op.ksh -d <DBNAME> -v <logs|data> -o <open|close>
|
|
#
|
|
# -d Oracle DBNAME
|
|
# -v Volume to operate on, logs or data
|
|
# -o Operation to perform - open or close the MV
|
|
|
|
_SCRIPT_="$0"
|
|
|
|
get_script_dir() {
|
|
script="$1"
|
|
case "$script" in
|
|
/*) abs_path="$script" ;;
|
|
*) abs_path="$PWD/$script" ;;
|
|
esac
|
|
while [ -L "$abs_path" ]; do
|
|
link=$(readlink "$abs_path")
|
|
case "$link" in
|
|
/*) abs_path="$link" ;;
|
|
*) abs_path="$(dirname "$abs_path")/$link" ;;
|
|
esac
|
|
done
|
|
script_dir=$(dirname "$abs_path")
|
|
cd "$script_dir" 2>/dev/null && pwd
|
|
}
|
|
|
|
MYDIR=$(get_script_dir "$_SCRIPT_")
|
|
. $MYDIR/rubrik.conf
|
|
. $MYDIR/oracle_funcs.ksh
|
|
|
|
usage() {
|
|
echo "Usage: $0 -d <DBNAME> -v <logs|data> -o <open|close>"
|
|
echo " $0 -n <MV_NAME> -o <open|close>"
|
|
echo " -d Oracle DBNAME"
|
|
echo " -v Volume to operate on, logs or data"
|
|
echo " -o Operation to perform - open or close the MV"
|
|
echo " -n Specify MV name directly (use only with -o)"
|
|
exit 1
|
|
}
|
|
|
|
|
|
|
|
force=0
|
|
MVNAME=""
|
|
|
|
while getopts "d:v:o:n:" o; do
|
|
case "${o}" in
|
|
d)
|
|
DBNAME=${OPTARG}
|
|
;;
|
|
v)
|
|
VOLUME=${OPTARG}
|
|
;;
|
|
o)
|
|
OPCODE=${OPTARG}
|
|
;;
|
|
n)
|
|
MVNAME=${OPTARG}
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
# Validate options
|
|
if [ -n "$MVNAME" ]; then
|
|
# Direct MV name mode: require -n and -o only
|
|
if [ -z "$OPCODE" ]; then
|
|
usage
|
|
fi
|
|
mv_name="$MVNAME"
|
|
elif [ -n "$DBNAME" ] && [ -n "$VOLUME" ] && [ -n "$OPCODE" ]; then
|
|
# Standard mode: require -d, -v, -o
|
|
mv_name=$(get_short_hostname)_${DBNAME}_${VOLUME}
|
|
else
|
|
usage
|
|
fi
|
|
# Script starts here
|
|
|
|
get_short_hostname() {
|
|
# Check OS type first - HP-UX hostname doesn't support -s
|
|
os_type=$(uname -s)
|
|
if [ "$os_type" = "HP-UX" ]; then
|
|
hostname | awk -F. '{print $1}'
|
|
else
|
|
# Try -s flag on other systems
|
|
if hostname -s >/dev/null 2>&1; then
|
|
hostname -s
|
|
else
|
|
hostname | awk -F. '{print $1}'
|
|
fi
|
|
fi
|
|
}
|
|
|
|
get_mv
|
|
|
|
case $OPCODE in
|
|
open) open_mv ;;
|
|
close) close_mv ;;
|
|
*) echo "ERROR: Invalid opcode. Specify open or close" ; exit_with_error
|
|
esac
|
|
|
|
cleanup
|