#!/usr/bin/env bash # $Header$ #****************************************************************************** # $Copyright: Copyright (c) 2022 Veritas Technologies LLC. All rights reserved $ #****************************************************************************** # this script runs from Oracle user account # set up a trace file that will be used troughout the script MAKE_TRACE=/tmp/make_trace.$$ if [ -f "$MAKE_TRACE" ]; then rm -f "$MAKE_TRACE" fi date | tee "$MAKE_TRACE" chmod 777 "$MAKE_TRACE" case "$(uname -s)" in Linux*) ECHO="/bin/echo -e" ;; SunOS*) ECHO="/usr/bin/echo" ;; *) ECHO="echo" ;; esac confirm () { ${ECHO} "${1} (y/n) [n] \c " | tee -a ${MAKE_TRACE} read ans echo "$ans" >> "$MAKE_TRACE" case "$ans" in Y*|y*) echo return 1 ;; *) echo return 0 ;; esac } #get O_HOME from the env var ORACLE_HOME O_HOME=$ORACLE_HOME echo "All Oracle instances should be shutdown before running this script." | tee -a "$MAKE_TRACE" echo "" echo "Please log into the Unix system as the Oracle owner for running this script" | tee -a "$MAKE_TRACE" echo "" if confirm "Do you want to continue?" then echo "exiting script" exit 0 fi; if [ "$O_HOME" = "" ]; then echo "ORACLE_HOME env var is not set. Please set it and rerun the script." | tee -a "$MAKE_TRACE" echo "exiting script" exit 0 fi; #Make sure User is logged in with Oracle owner account #----------------------------------------------------- login_id=$(id |cut -d"(" -f2 | cut -d ")" -f1) ora_owner=$(ls -l "$ORACLE_HOME"/bin/oracle | sed -e 's/ \{1,\}/ /' | cut -d' ' -f3) if [ "$login_id" != "$ora_owner" ] ; then echo "Please log into the Unix system as the Oracle owner and rerun the script." | tee -a "$MAKE_TRACE" echo "exiting script" exit 0 fi ; # find out if this is Oracle 7.x or 8.x if [ -f "$O_HOME"/bin/rman ]; then VER8x=1 else VER8x=0 fi; TEMP=/tmp/temp.$$ echo "exit" >> "$TEMP" if [ "$VER8x" -ne 1 ] then O_VERSION=7.x else O_VERSION=$("$O_HOME"/bin/sqlplus -? < "$TEMP" |grep Release | cut -f3 -d " ") fi rm -rf "$TEMP" LIBOBK_PATH=/usr/openv/netbackup/bin echo "" echo "LIBOBK path: $LIBOBK_PATH" | tee -a "$MAKE_TRACE" echo "ORACLE_HOME: $O_HOME" | tee -a "$MAKE_TRACE" echo "Oracle version: $O_VERSION" | tee -a "$MAKE_TRACE" if [ -f "$LIBOBK_PATH"/version ]; then MACHINE=$(head -1 "$LIBOBK_PATH"/version | cut -f2- -d-) PLATFORM=nosupport # echo "MACHINE:$MACHINE" |tee -a ${MAKE_TRACE} case "$MACHINE" in AIX*) OS=$(oslevel | cut -f1-3 -d"." | sed -e 's/\.//g') if [ "$OS" -ge "420" ] && [ "$OS" -lt "433" ] ; then PLATFORM=rs6000_42 elif [ "$OS" -ge "433" ] && [ "$OS" -lt "510" ] ; then PLATFORM=rs6000_433 else PLATFORM=rs6000_51 fi echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" export LD_LIBRARY_PATH="$O_HOME/lib:$LD_LIBRARY_PATH"; if [ -f "$O_HOME"/lib/libobk.a ] || [ -h "$O_HOME"/lib/libobk.a ] ; then echo "Moving libobk.a to libobk.a.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.a "$O_HOME"/lib/libobk.a.back fi ; echo "ln -s $LIBOBK_PATH/libobk.a64 $O_HOME/lib/libobk.a" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.a64 "$O_HOME"/lib/libobk.a ; LIBPATH=$O_HOME/lib:$LIBPATH ; export LIBPATH ; echo "Done" | tee -a "$MAKE_TRACE" ;; HP*) OS=$(uname -r | cut -f2 -d".") if [ "$OS" = "10" ] ; then PLATFORM=hp10.20 #Is this a valid version of Oracle for this platform echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ -f "$O_HOME"/lib/libobk.sl ] || [ -h "$O_HOME"/lib/libobk.sl ] ; then echo "Moving libobk.sl to libobk.sl.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.sl "$O_HOME"/lib/libobk.sl.back fi ; if [ -f "$O_HOME"/lib/libobk.a ] || [ -h "$O_HOME"/lib/libobk.a ] ; then echo "Moving libobk.a to libobk.a.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.a "$O_HOME"/lib/libobk.a.back fi ; echo "ln -s $LIBOBK_PATH/libobk.sl $O_HOME/lib/libobk.sl" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.sl "$O_HOME"/lib/libobk.sl ; echo "Done" | tee -a "$MAKE_TRACE" elif [ "$OS" = "11" ] ; then PLATFORM=hp11.00 os_bits=$(getconf _CS_KERNEL_BITS) is_hpia64=$(uname -m) O_EXECBITS=$(file "$O_HOME"/bin/oracle | cut -f1 -d " " |cut -f2) if [ "$os_bits" = "64" ] && [ "$O_EXECBITS" = "ELF-64" ] ; then echo "Linking LIBOBK ($os_bits bits):" | tee -a "$MAKE_TRACE" if [ "$is_hpia64" = "ia64" ] ; then if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so "$O_HOME"/lib/libobk.so ; else if [ -f "$O_HOME"/lib/libobk.sl ] || [ -h "$O_HOME"/lib/libobk.sl ] ; then echo "Moving libobk.sl to libobk.sl.back" mv -f "$O_HOME"/lib/libobk.sl "$O_HOME"/lib/libobk.sl.back fi ; if [ -f "$O_HOME"/lib/libobk.a ] || [ -h "$O_HOME"/lib/libobk.a ] ; then echo "Moving libobk.a to libobk.a.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.a "$O_HOME"/lib/libobk.a.back fi ; if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.sl64 $O_HOME/lib/libobk.sl" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.sl64 "$O_HOME"/lib/libobk.sl ; fi ; SHLIB_PATH=$O_HOME/lib:$SHLIB_PATH ; export SHLIB_PATH ; echo "Done" | tee -a "$MAKE_TRACE" else echo "This version of Oracle is not supported in this script" | tee -a "$MAKE_TRACE" fi fi ;; Solaris*) #OS_f1=$(uname -r | cut -f1 -d".") OS_f2=$(uname -r | cut -f2 -d".") PLATFORM="Solaris 2.$OS_f2" SYSTYPE=$(uname -p) echo "Platform type: $SYSTYPE" | tee -a "$MAKE_TRACE" #Is this a valid version of Oracle for this platform echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ "$SYSTYPE" != "i386" ] ; then if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving 64-bit libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi echo "ln -s $LIBOBK_PATH/libobk.so64.1 $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so64.1 "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; else #i386 platform so 64-bit Oracle is installed - using libobk.so if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so.1 $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so.1 "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; fi echo "Done" | tee -a "$MAKE_TRACE" ;; RedHat*) #Linux platforms OS_f2=$(uname -a | cut -c1-5) PLATFORM="$OS_f2 RedHat" SYSTYPE=$(uname -m) #Is this a valid version of Oracle for this platform echo "Platform type: $SYSTYPE" | tee -a "$MAKE_TRACE" echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ "$SYSTYPE" != "ia64" ] ; then # for all Oracle 11, 12 and 18 use 64-bit Oracle if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving 64-bit libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi echo "ln -s $LIBOBK_PATH/libobk.so64 $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so64 "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; else #ia64 platform so 64-bit Oracle is installed - using libobk.so if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; fi echo "Done" | tee -a "$MAKE_TRACE" ;; SuSE*) OS_f2=$(uname -a | cut -c1-5) PLATFORM="$OS_f2 SuSE" SYSTYPE=$(uname -m) #Is this a valid version of Oracle for this platform echo "Platform type: $SYSTYPE" | tee -a "$MAKE_TRACE" if [ "$SYSTYPE" != "ia64" ] ; then echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so64 $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so64 "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; else #ia64 platform so 64-bit Oracle is installed - using libobk.so echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so "$O_HOME"/lib/libobk.so ; LD_LIBRARY_PATH=$O_HOME/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH ; fi echo "Done" | tee -a "$MAKE_TRACE" ;; IBMzSeries*) #zLinux platforms PLATFORM="zLinux" #Is this a valid version of Oracle for this platform echo "Linking LIBOBK:" | tee -a "$MAKE_TRACE" if [ -f "$O_HOME"/lib/libobk.so ] || [ -h "$O_HOME"/lib/libobk.so ] ; then echo "Moving libobk.so to libobk.so.back" | tee -a "$MAKE_TRACE" mv -f "$O_HOME"/lib/libobk.so "$O_HOME"/lib/libobk.so.back fi ; echo "ln -s $LIBOBK_PATH/libobk.so $O_HOME/lib/libobk.so" | tee -a "$MAKE_TRACE" ln -s "$LIBOBK_PATH"/libobk.so "$O_HOME"/lib/libobk.so ; echo "Done" | tee -a "$MAKE_TRACE" ;; esac if [ "$PLATFORM" = "nosupport" ] ; then echo "ERROR: Platform is not supported." | tee -a "$MAKE_TRACE" echo "Oracle Linking Script Aborted." | tee -a "$MAKE_TRACE" exit 1 fi else echo "$LIBOBK_PATH/version not found." | tee -a "$MAKE_TRACE" exit 1 fi; echo "" echo "Please check the trace file located in $MAKE_TRACE to make sure the linking process was successful." exit 0