################################################################# # # # # ################################################################# # # # # # USAGE : To be executed as oracle user # # (pbrun to oracle or pboracle) # # # # Manual execution # # sh bl_stop.ksh # # # # Via job scheduler tools and by-passing the prompt # # sh bl_stop.ksh y # # # #---------------------------------------------------------------# # # # //Generic information about the batch of scripts developed// # # bl_status.ksh # # bl_stop.ksh # # bl_stop_crs.ksh # # bl_start_crs.ksh # # bl_start.ksh # # # # Versions/Combinations Supported # # Clustware 11g # # Clustware 10g # # NON-RAC with ASM 11g # # NON-RAC with ASM 10g # # NON-RAC & NON-ASM # # # # Components in scope # # Clusterware # # ASM Instance # # Database Instance # # Cluster Listener # # Local Listener # # Manager Recovery Process # # GoldenGate Replication # # Port Utility # # Enterprise Manager Agent # # OSWatcher Utility # # Foglight Monitoring Agent # # Filesystem # # Rawdisk # # # ################################################################# export OS=`uname -a | awk '{ print $1 }'` eval timevalue=`date '+%m%d%Y_%H%M%S'` eval filename=$(echo $(hostname) | cut -d. -f1)_$timevalue # Check for Redhat if [[ -f /etc/redhat-release ]]; then export RH_VER=`cat /etc/redhat-release | grep "Linux Server release" | sed -n 's/.*\(Linux Server release.*\).*/\1/p' | awk '{ print $4 }'` else export RH_VER=0 fi # CHECK IF AAR DATABASE SERVER if [ ! -f $OUTPUT_DIRECTORY/execute.flag ] then sleep 2 elif [ "$(cat $OUTPUT_DIRECTORY/execute.flag)" = "no" ] then echo "This is an AAR Database Server, exiting cleanly." | tee -a ${LOG} #insert_repdb exit 0 else sleep 2 fi # CHECK IF MYSQL DATABASE SERVER if [ "$(ps -ef | grep -i mysql | grep -v grep | wc -l)" -ge 1 ] then echo "This is a MySQL Database Server" | tee -a ${LOG} #insert_repdb exit 0 fi # Check if user really wants to STOP the services if [ $# -eq 0 ] then read -r -p "Are you sure you want to STOP the Oracle services ? [y/n] " response if [ $response = y ] then echo ""; echo "Please wait while the services are brought down... "; echo "" export oracred=oracle:dba export oraowner=oracle export oragroup=dba else exit; >/dev/null fi elif [ $1 == y ] then echo ""; echo "Please wait while the services are brought down... "; echo "" #Handle second Argument if [[ ! -z $2 ]]; then export oracred=$2 export oraowner=`echo $oracred | cut -d":" -f1 -s` export oragroup=`echo $oracred | cut -d":" -f2 -s` echo "Oracle Ownership Captured ARGUMENTS ... oracred=$oracred oraowner=$oraowner oragroup=$oragroup " else export oracred=oracle:dba export oraowner=oracle export oragroup=dba fi else exit; >/dev/null fi # CHECK IF THE USER IS Correct as per Arg#2 echo " " if [ $(whoami) != "${oraowner}" ] then echo "ATTENTION : Please execute this script as ${oraowner} user" exit 0; fi # SCRIPT AND OUTPUT DIRECTORIES INITIALIZATION SCRIPT_DIRECTORY=/var/opt/oracle/BACS/script if [[ ${oraowner} = "oracle" ]]; then if [[ -d /oracle/dba/output/generic ]]; then OUTPUT_DIRECTORY=/oracle/dba/output/generic else OUTPUT_DIRECTORY=/var/bl_ora/log if [[ ! -d $OUTPUT_DIRECTORY ]]; then echo "OUTPUT_DIRECTORY: $OUTPUT_DIRECTORY was not found on this server ... Exiting" exit 0 fi fi else if [[ -d /oracle/dba/output/generic ]]; then OUTPUT_DIRECTORY=/oracle/dba/output/generic/${oraowner} else OUTPUT_DIRECTORY=/var/bl_ora/log/${oraowner} if [[ ! -d $OUTPUT_DIRECTORY ]]; then echo "OUTPUT_DIRECTORY: $OUTPUT_DIRECTORY was not found on this server ... Exiting" exit 0 fi fi fi # REMOVE THE TEMPORARY LOG FILE rm -f $OUTPUT_DIRECTORY/stop.log #Purge pre/post files from previous executions before moving on ... if [[ -d ${OUTPUT_DIRECTORY} ]]; then rm -f ${OUTPUT_DIRECTORY}/pre_stop*.log rm -f ${OUTPUT_DIRECTORY}/post_stop*.log rm -f ${OUTPUT_DIRECTORY}/post_start*.log fi # ASSIGN A NEW LOG FILE LOG=$OUTPUT_DIRECTORY/stop.log; echo "" >> ${LOG}; # CHECK THE SERVER TYPE if [ -f $OUTPUT_DIRECTORY/server_type.log ]; then server_type=$(<$OUTPUT_DIRECTORY/server_type.log) else if [ "$(ps -ef | grep crsd.bin | grep -v grep | wc -l)" -eq 1 ] then if [ "$(ps -ef | grep crsd.bin | grep -v grep | grep "12\." | wc -l)" -eq 1 ] then export server_type="rac_12c" elif [ "$(ps -ef | grep crsd.bin | grep -v grep | grep "11\." | wc -l)" -eq 1 ] then export server_type="rac_11g" else export server_type="rac_10g" fi else if [ "$(ps -ef | grep ohasd.bin | grep -v grep | grep "12\." | wc -l)" -eq 1 ] then export server_type="norac_asm12c" elif [ "$(ps -ef | grep ohasd.bin | grep -v grep | grep "11\." | wc -l)" -eq 1 ] then export server_type="norac_asm11g" elif [ "$(ps -ef | grep pmon | grep -v grep | grep "+ASM" | grep -v onitor | wc -l)" -eq 1 ] then export server_type="norac_asm10g" else export server_type="norac_noasm" fi fi # Address rare issue seen where crsd.bin not picked up even though it is in fact a RAC system! if [[ "$server_type" == norac_asm* ]] && [[ -f /etc/oratab ]]; then ASM_LAST_CHAR=`grep "^\+ASM" /etc/oratab | cut -d":" -f1 -s | sed -e "s/.*\(.\)/\1/"` #ASM_LAST_CHAR=`ps -ef | grep "asm_pmon_" | grep -v grep | awk '{ print $NF }' | cut -d"_" -f3 -s | sed -e "s/.*\(.\)/\1/"` echo $ASM_LAST_CHAR | egrep '^[0-9]+$' if [ $? -eq 0 ]; then #echo "$ASM_LAST_CHAR is a number .. So it's a RAC " server_str_2=`echo $server_type | sed 's/asm//g' |cut -d"_" -f2 -s` export server_type="rac_${server_str_2}" fi fi echo $server_type > $OUTPUT_DIRECTORY/server_type.log fi # COLLECT PRE-STATUS INFORMATION BEFORE STOPPING THE SERVICES # echo "Collecting pre-status report before stopping the services.... " ; echo ""; # sh $SCRIPT_DIRECTORY/bl_status.ksh $oracred ;echo "" collect_lsnr() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep |sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d' >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log #elif [ $(( (`date +%s` - `stat -L --format %Y $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log`) > (2880*60) )) -eq 1 ] #then #rm -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log #ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep |sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d' >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else for LSNR in `ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep |sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d'` do if [ $(grep -w "$LSNR" $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log | wc -l) -eq 1 ] then sleep 0 else echo $LSNR >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi done fi #Capture lsnr name and OHs on this host if [[ -f $OUTPUT_DIRECTORY/pre_config_lsnr.log ]]; then rm $OUTPUT_DIRECTORY/pre_config_lsnr.log fi ps -ef | grep tnslsnr | grep "^.*${oraowner} " | grep -v grep | while read LSNR_PROC do #LSNR_NAME=`echo $LSNR_PROC | grep -oP '(?<=tnslsnr )\w+'` #LSNR_HOME=`echo $LSNR_PROC | grep -oP '....................................................../bin/tnslsnr ' | awk '{ print $NF }' | awk -F'/' '{for(i = 1; i <= NF - 2; i++) printf("%s%s", $i, i == NF - 2 ? "" : OFS)}' OFS="/"` LSNR_NAME=`echo $LSNR_PROC | sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }'` LSNR_HOME=`echo $LSNR_PROC | sed -n 's/.*\(..........................................................tnslsnr\).*/\1/p' | awk '{ print $NF }' | grep -v "\.\.\.\.tnslsnr" | sed 's/\/bin\/tnslsnr//g' | head -1` echo "${LSNR_NAME}:${LSNR_HOME}" >> $OUTPUT_DIRECTORY/pre_config_lsnr.log done elif [ $when = post ] then ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep | sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d' >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_mrp() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep mrp | sort -k9 | grep "^.*${oraowner} " | grep -v grep | awk '{ print $NF }' | cut -d"_" -f3,4 -s >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else for MRP in `ps -ef | grep mrp | sort -k9 | grep "^.*${oraowner} " | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do if [ $(grep -w "$MRP" $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log | wc -l) -eq 1 ] then sleep 1 else echo $MRP >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi done fi elif [ $when = post ] then ps -ef | grep mrp | sort -k9 | grep "^.*${oraowner} " | grep -v grep | awk '{ print $NF }' | cut -d"_" -f3,4 -s >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_dbinst() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else for DBINST in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do if [ $(grep -w "$DBINST" $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log | wc -l) -eq 1 ] then sleep 1 else echo $DBINST >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi done fi elif [ $when = post ] then ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_asm() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else for ASM in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'` do if [ $(grep -w "$ASM" $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log | wc -l) -eq 1 ] then sleep 1 else echo $ASM >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi done fi elif [ $when = post ] then ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_agent() { if [ $(ps -ef | grep emagent | grep "^.*${oraowner} " | grep -v grep | wc -l) -ne 0 ] then ORACLE_SID=`cat /etc/oratab | awk 'BEGIN{FS=":"}{print $1}' | grep OEM | grep -v "^#"` export ORAENV_ASK=NO >/dev/null; if [[ ! -z $ORACLE_SID ]]; then . oraenv >/dev/null if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log emctl status agent | grep "Agent is Running and Ready" | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else if [ $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) -gt 0 ] then sleep 1 else emctl status agent | grep "Agent is Running and Ready" | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi fi elif [ $when = post ] then emctl status agent | grep "Agent is Running and Ready" | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi fi else echo 0 > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi } collect_fgl() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep -i foglight | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else if [ $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) -gt 0 ] then sleep 1 else ps -ef | grep -i foglight | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi fi elif [ $when = post ] then ps -ef | grep -i foglight | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_portutil() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep "portdaemon.pl" | grep -v grep | grep port | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else if [ $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) -gt 0 ] then sleep 1 else ps -ef | grep "portdaemon.pl" | grep -v grep | grep port | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi fi elif [ $when = post ] then ps -ef | grep "portdaemon.pl" | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi #Capturing the port information if [ ! -f $OUTPUT_DIRECTORY/portnum.val ] then touch $OUTPUT_DIRECTORY/portnum.val ps -ef | grep portdaemon.pl | grep -v grep | awk 'BEGIN{FS=" "}{print $NF}' > $OUTPUT_DIRECTORY/portnum.val elif [ $(( (`date +%s` - `stat -L --format %Y $OUTPUT_DIRECTORY/portnum.val`) > (2880*60) )) = 1 ] then rm -f $OUTPUT_DIRECTORY/portnum.val ps -ef | grep portdaemon.pl | grep -v grep | awk 'BEGIN{FS=" "}{print $NF}' > $OUTPUT_DIRECTORY/portnum.val else sleep 1 fi } collect_osw() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep -i OSW | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else if [ $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) -gt 0 ] then sleep 1 else ps -ef | grep -i OSW | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi fi elif [ $when = post ] then ps -ef | grep -i OSW | grep "^.*${oraowner} " | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_instancestatus() { if [ "$(ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -ne 0 ] then rm -f $OUTPUT_DIRECTORY/db:inst rm -f $OUTPUT_DIRECTORY/db:inst.log rm -f $OUTPUT_DIRECTORY/unidb:inst.log rm -f $OUTPUT_DIRECTORY/pre_gg_inst.log rm -f $OUTPUT_DIRECTORY/pre_stop_dbopen.log rm -f $OUTPUT_DIRECTORY/pre_stop_dbopenronly.log rm -f $OUTPUT_DIRECTORY/pre_stop_dbmount.log # Grab unique name and other info from each runing Instance for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do export ORACLE_SID=$SID export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null op=`$ORACLE_HOME/bin/sqlplus -s '/ as sysdba'<< EOFUDB1 set echo off; set heading off; set linesize 200 pages 100; select 'DBINST_ENTRY:'||d.DB_UNIQUE_NAME||':'||i.INSTANCE_NAME from v\\$database d, v\\$instance i; select 'PRE_OGG_DBINST:'||username||':${ORACLE_SID}' from gv\\$session where upper(username) like 'GGSADMIN%' and rownum < 2; EOFUDB1` echo "$op" | grep "DBINST_ENTRY:" >> $OUTPUT_DIRECTORY/unidb:inst.log echo "$op" | grep "PRE_OGG_DBINST:" >> $OUTPUT_DIRECTORY/pre_gg_inst.log done if [[ $server_type = "rac_12c" ]] || [[ $server_type = "rac_11g" ]] || [[ $server_type = "rac_10g" ]] then export ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'` export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do if [[ ! -f $ORACLE_HOME/bin/crs_stat ]]; then # To support 10gRAC where CRS may be runing from different home than +ASM CRSD=`ps -ef | grep -v grep | grep root | sed -n 's/.*\(......................................................crsd.bin\).*/\1/p' | awk '{ print $NF }' | tail -1` CRS_BIN=`dirname $CRSD` UNIQUE_NAME=`echo $(crs_stat | grep "ora." | grep ".db$" | grep -i ${SID%?} | tr "[:lower:]" "[:upper:]")` if [[ ! -z $UNIQUE_NAME ]]; then echo $(${CRS_BIN}/crs_stat | grep "ora." | grep ".db$" | grep -i ${SID%?} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst else if [[ -f $OUTPUT_DIRECTORY/unidb:inst.log ]]; then #Do lookup from status file to find correct Unique name UNI_NAME=`grep "DBINST_ENTRY:" $OUTPUT_DIRECTORY/unidb:inst.log | grep ":${SID}$"| cut -d":" -f2 -s` if [[ ! -z $UNI_NAME ]]; then echo $(${CRS_BIN}/crs_stat | grep "ora." | grep ".db$" | grep -i ${UNI_NAME} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst else echo $(${CRS_BIN}/crs_stat | grep "ora." | grep ".db$" | grep -i ${SID%?} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst fi else echo $(${CRS_BIN}/crs_stat | grep "ora." | grep ".db$" | grep -i ${SID%?} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst fi fi else R_DBNAME=` echo $SID | sed "s/[1-9]$//g"|sed "s/_$//g"` ;ONENode_DB=""; if [ "$(srvctl config database -d $R_DBNAME |grep -w "RACOneNode" | wc -l)" -eq 1 ] then export LOCAL_NODE=`hostname -s` export ONENode_DB=`echo ":$LOCAL_NODE"` fi UNIQUE_NAME=`echo $(crs_stat | grep "ora." | grep ".db$" | grep -i $R_DBNAME | tr "[:lower:]" "[:upper:]")` if [[ -f $OUTPUT_DIRECTORY/unidb:inst.log ]] && [[ ! -z $UNIQUE_NAME ]]; then UNIQUE_SID=`echo $UNIQUE_NAME | cut -d"." -f2 -s` CHK_UNI_LOG=`grep ":${UNIQUE_SID}:" $OUTPUT_DIRECTORY/unidb:inst.log` if [[ -z $CHK_UNI_LOG ]]; then UNIQUE_NAME="" fi fi if [[ ! -z $UNIQUE_NAME ]]; then echo $(crs_stat | grep "ora." | grep ".db$" | grep -i $R_DBNAME | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID$ONENode_DB >> $OUTPUT_DIRECTORY/db:inst else if [[ -f $OUTPUT_DIRECTORY/unidb:inst.log ]]; then #Do lookup from status file to find correct Unique name and then try to match it with crs "*.db" resource .. if nothing then default UNIQ NAME as ${SID%?} UNI_NAME=`grep "DBINST_ENTRY:" $OUTPUT_DIRECTORY/unidb:inst.log | grep ":${SID}$"| cut -d":" -f2 -s` if [[ ! -z $UNI_NAME ]]; then CRS_UNI_MATCH=`echo $(crs_stat | grep "ora." | grep ".db$" | grep -i ${UNI_NAME} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')` ### if [[ ! -z $CRS_UNI_MATCH ]]; then if [[ "$(crs_stat | grep "ora." | grep ".db$" | grep -i ${UNI_NAME} | wc -l)" -eq 1 ]]; then echo $(crs_stat | grep "ora." | grep ".db$" | grep -i ${UNI_NAME} | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst else echo $(crs_stat | grep "ora." | grep ".db$" | grep -i $R_DBNAME | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst fi else echo $(crs_stat | grep "ora." | grep ".db$" | grep -i $R_DBNAME | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst fi else echo $(crs_stat | grep "ora." | grep ".db$" | grep -i $R_DBNAME | tr "[:lower:]" "[:upper:]" | awk 'BEGIN{FS="."}{print $2}')":"$SID >> $OUTPUT_DIRECTORY/db:inst fi fi fi done else for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do echo $SID":"$SID >> $OUTPUT_DIRECTORY/db:inst done fi cp $OUTPUT_DIRECTORY/db:inst $OUTPUT_DIRECTORY/db:inst.log find_instancestatus() { while read data do export ORACLE_DB=$(echo $data | awk 'BEGIN{FS=":"}{print $1}') >/dev/null export ORACLE_SID=$(echo $data | awk 'BEGIN{FS=":"}{print $2}') >/dev/null export RAC_ONEDB=$(echo $data | awk 'BEGIN{FS=":"}{print $3}') >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null op=`$ORACLE_HOME/bin/sqlplus -s '/ as sysdba'<< EOFSTATUS set echo off; set head off; select open_mode from v\\$database; EOFSTATUS` if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log if [ "$(echo "$op" | grep "$STATUS" | wc -l)" -eq 1 ] then echo $ORACLE_DB":"$ORACLE_SID":"$RAC_ONEDB > $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log fi else if [ "$(echo "$op" | grep "$STATUS" | wc -l)" -eq 1 ] then if [ $(grep -w "$ORACLE_DB" $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log | wc -l) -eq 1 ] then sleep 1 else echo $ORACLE_DB":"$ORACLE_SID":"$RAC_ONEDB >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log fi fi fi elif [ $when = post ] then if [ "$(echo "$op" | grep "$STATUS" | wc -l)" -eq 1 ] then echo $ORACLE_DB":"$ORACLE_SID":"$RAC_ONEDB >> $OUTPUT_DIRECTORY/"$when"_"$why"_"$dbopmnt".log fi else sleep 0 fi done < $OUTPUT_DIRECTORY/db:inst.log } STATUS="READ WRITE"; dbopmnt=dbopen; find_instancestatus STATUS="READ ONLY"; dbopmnt=dbopenronly; find_instancestatus STATUS=MOUNT; dbopmnt=dbmount; find_instancestatus else touch $OUTPUT_DIRECTORY/pre_stop_dbopen.log touch $OUTPUT_DIRECTORY/pre_stop_dbmount.log touch $OUTPUT_DIRECTORY/pre_stop_dbopenronly.log fi echo "OPEN READ WRITE mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbopen.log) echo "OPEN READ ONLY mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbopenronly.log) echo "MOUNT mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbmount.log) echo "" >> ${LOG} echo "OPEN READ WRITE mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbopen.log) >> ${LOG} echo "OPEN READ ONLY mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbopenronly.log) >> ${LOG} echo "MOUNT mode " ' ' ":" $(cat $OUTPUT_DIRECTORY/pre_stop_dbmount.log) >> ${LOG} echo "" >> ${LOG} } collect_dbservices() { rm -f $OUTPUT_DIRECTORY/"$when"_"$why"_dbservices.log while read data do export ORACLE_DB=$(echo $data | awk 'BEGIN{FS=":"}{print $1}') >/dev/null export ORACLE_SID=$(echo $data | awk 'BEGIN{FS=":"}{print $2}') >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null #echo $ORACLE_DB:$ORACLE_SID":"$(srvctl status service -d $ORACLE_DB | grep $ORACLE_SID | awk 'BEGIN{FS=" "}{print $(NF-5)}') >> $OUTPUT_DIRECTORY/"$when"_"$why"_dbservices.log echo $ORACLE_DB:$ORACLE_SID":"$(srvctl status service -d $ORACLE_DB | grep $ORACLE_SID | grep -i "is running" | awk '{ print $2 }') >> $OUTPUT_DIRECTORY/"$when"_"$why"_dbservices.log done < $OUTPUT_DIRECTORY/db:inst.log } # OGG Support ############## collect_ogg() { ps -ef | grep -v grep | grep "mgr PARAMFILE" | grep "^.*${oraowner} " | sed -n 's/.*\(....................................................................\/....prm \).*/\1/p' | awk '{ print $NF }' | grep -v "\.\.\.\.mgr.prm" >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log } # DBFS Support ############### collect_dbfs() { ps -ef | grep -v grep | grep "dbfs_client" | grep "^.*${oraowner} " | sed -n 's/.*\(................................................................\/bin\/dbfs_client\).*/\1/p' | awk '{ print $NF }' | grep -v "\.\.\.\.dbfs_client" >$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log } display_pre_post() { if [ $when = pre ] then if [ $what = fgl ] || [ $what = agent ] || [ $what = mrp ] || [ $what = osw ] || [ $what = ogg ] || [ $what = dbfs ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then echo "PRE stop" $what "running " ":" "NO" | tee -a ${LOG} else echo "PRE stop" $what "running " ":" "YES" | tee -a ${LOG} fi elif [ $what = asm ] || [ $what = dbinst ] || [ $what = lsnr ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then echo "PRE stop" $what "running " ":" "NO" | tee -a ${LOG} else echo "PRE stop" $what "running " ":" $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) | tee -a ${LOG} fi fi elif [ $when = post ] then if [ $what = fgl ] || [ $what = agent ] || [ $what = mrp ] || [ $what = osw ] || [ $what = ogg ] || [ $what = dbfs ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then echo "POST stop" $what "running " ":" "NO" | tee -a ${LOG} echo "" | tee -a ${LOG} else echo "POST stop" $what "running " ":" "YES" | tee -a ${LOG} echo "" | tee -a ${LOG} fi elif [ $what = asm ] || [ $what = dbinst ] || [ $what = lsnr ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then echo "POST stop" $what "running " ":" "NO" | tee -a ${LOG} echo "" | tee -a ${LOG} else echo "POST stop" $what "running " ":" $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) | tee -a ${LOG} echo "" | tee -a ${LOG} fi fi fi } stopped_status() { if [[ -f $OUTPUT_DIRECTORY/post_"$why"_"$what".log ]]; then if [ "$(cat $OUTPUT_DIRECTORY/post_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/post_"$why"_"$what".log ] then echo "yes" > $OUTPUT_DIRECTORY/stopped_$what.log echo "OK : successfully stopped $what" | tee -a ${LOG} else echo "no" > $OUTPUT_DIRECTORY/stopped_$what.log echo "ATTENTION : $what didn't stop. Please check" | tee -a ${LOG} fi fi } # STOPPING THE SERVICES stop_asm_10g() { echo "STOPPING" $what | tee -a ${LOG} for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'` do export ORACLE_SID=${SID} >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null echo "Stopping instance " $ORACLE_SID | tee -a ${LOG} op=`$ORACLE_HOME/bin/sqlplus -s '/ as sysdba'<< EOF set echo off; set linesize 200 pages 100; shutdown immediate; EOF` echo "$op" >> ${LOG};echo "" >> ${LOG} done sleep 5 } stop_db_rac() { echo "STOPPING" $what | tee -a ${LOG} while read data do export ORACLE_DB=$(echo $data | awk 'BEGIN{FS=":"}{print $1}') >/dev/null export ORACLE_SID=$(echo $data | awk 'BEGIN{FS=":"}{print $2}') >/dev/null export RACONE_DB=$(echo $data | awk 'BEGIN{FS=":"}{print $3}') >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null if [ $ORACLE_DB = $ORACLE_SID ] || [[ ! -z $RACONE_DB ]] then echo "Stopping Database " $ORACLE_SID | tee -a ${LOG} srvctl stop database -d $ORACLE_DB | tee -a ${LOG} else echo "Stopping instance " $ORACLE_SID | tee -a ${LOG} srvctl stop instance -d $ORACLE_DB -i $ORACLE_SID | tee -a ${LOG} # >/dev/null fi sleep 5 done < $OUTPUT_DIRECTORY/db:inst.log } stop_dbservices() { echo "STOPPING ANY DB SERVICE(S) on " $what | tee -a ${LOG} while read data do export ORACLE_DB=$(echo $data | awk 'BEGIN{FS=":"}{print $1}') >/dev/null export ORACLE_SID=$(echo $data | awk 'BEGIN{FS=":"}{print $2}') >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null export LOCAL_NODE=`hostname -s` if [[ "$server_type" == rac* ]]; then # Stop Any services for $ORACLE_DB on this node if [ $(srvctl status service -d $ORACLE_DB | grep $ORACLE_SID | grep -i "is running" | awk '{ print $2 }' | wc -l) -ne 0 ] then #Loop Through Running Services srvctl status service -d $ORACLE_DB | grep $ORACLE_SID | grep -i "is running" | awk '{ print $2 }' | while read DB_SERV_NAME do echo "srvctl disable service -d $ORACLE_DB -s $DB_SERV_NAME" >> ${LOG} srvctl disable service -d $ORACLE_DB -s $DB_SERV_NAME >> ${LOG} echo " srvctl stop service -d $ORACLE_DB -s $DB_SERV_NAME -n $LOCAL_NODE" >> ${LOG} srvctl stop service -d $ORACLE_DB -s $DB_SERV_NAME -n $LOCAL_NODE >> ${LOG} done fi else # Stop Any services for $ORACLE_DB on this node if [ $(srvctl status service -d $ORACLE_DB | grep -i "is running" | awk '{ print $2 }' | wc -l) -ne 0 ] then echo "srvctl stop service -d $ORACLE_DB" >> ${LOG} srvctl stop service -d $ORACLE_DB >> ${LOG} fi fi sleep 5 done < $OUTPUT_DIRECTORY/db:inst.log } stop_db_standalone() { echo "STOPPING" $what | tee -a ${LOG} for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do export ORACLE_SID=${SID} >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null echo "Stopping instance " $ORACLE_SID | tee -a ${LOG} op=`$ORACLE_HOME/bin/sqlplus -s '/ as sysdba'<< EOF set echo off; shutdown immediate; EOF` echo "$op" >> ${LOG};echo "" >> ${LOG} done sleep 5 } stop_mrp() { echo "STOPPING" $what | tee -a ${LOG} for SID in `ps -ef | grep mrp | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` do export ORACLE_SID=${SID} >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null echo "Stopping MRP " $ORACLE_SID | tee -a ${LOG} op=`$ORACLE_HOME/bin/sqlplus -s '/ as sysdba'<< EOF set echo off; alter database recover managed standby database cancel; EOF` echo "$op" >> ${LOG};echo "" >> ${LOG} done sleep 5 } stop_lsnr() { echo "STOPPING" $what | tee -a ${LOG} if [[ $server_type = "rac_12c" ]] || [[ $server_type = "rac_11g" ]] || [[ $server_type = "norac_asm11g" ]] || [[ $server_type = "norac_asm12c" ]] then ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}' | head -1` else ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s | head -1` fi export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null #for lsnr in `ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep | grep $ORACLE_HOME | grep -oP '(?<=tnslsnr )\w+'` for lsnr in `ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep | grep $ORACLE_HOME | sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d'` do echo "" >> ${LOG} echo "Stopping listener $lsnr running from OH=${ORACLE_HOME} " | tee -a ${LOG} echo "lsnrctl stop $lsnr" >> ${LOG} echo "" >> ${LOG} lsnrctl stop $lsnr >> ${LOG} sleep 10 done for lsnr in `ps -ef | grep lsnr | grep "^.*${oraowner} " | grep -v grep | sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | sed '/^\s*$/d'` do #echo "Stopping listener " $lsnr | tee -a ${LOG} if [[ -f $OUTPUT_DIRECTORY/pre_config_lsnr.log ]]; then LSNR_HOME=`cat $OUTPUT_DIRECTORY/pre_config_lsnr.log | grep "^${lsnr}:" | cut -d":" -f2 -s |tail -1` if [[ $ORACLE_HOME != $LSNR_HOME ]]; then if [[ -f /etc/oratab ]]; then ORACLE_SID=`grep $LSNR_HOME /etc/oratab | grep -v "^#" | cut -d":" -f1 -s |tail -1` export ORAENV_ASK=NO >/dev/null if [[ ! -z $ORACLE_SID ]]; then . oraenv >/dev/null fi fi fi fi echo "" >> ${LOG} echo "Stopping listener $lsnr running from OH=${ORACLE_HOME} " | tee -a ${LOG} echo "lsnrctl stop $lsnr" >> ${LOG} lsnrctl stop $lsnr >> ${LOG} echo "" >> ${LOG} done sleep 5 } stop_agent() { echo "STOPPING" $what | tee -a ${LOG} if [ $(ps -ef | grep emagent | grep "^.*${oraowner} " | grep -v grep | wc -l) -ne 0 ] then ORACLE_SID=`cat /etc/oratab | awk 'BEGIN{FS=":"}{print $1}' | grep OEM | grep -v "^#"` export ORAENV_ASK=NO >/dev/null; if [[ ! -z $ORACLE_SID ]]; then . oraenv >/dev/null if [[ -f $ORACLE_HOME/bin/emctl ]]; then emctl stop agent >/dev/null; sleep 5 fi fi else sleep 1 fi } stop_fgl() { echo "STOPPING" $what | tee -a ${LOG} if [[ -f /oracle/dba/foglight/fgl_5/bin/fglam ]]; then /oracle/dba/foglight/fgl_5/bin/fglam --stop >/dev/null sleep 60 else # Search for non standard Foglight bin and execute stop if [ "$(ps -ef | grep -i foglight | grep "^.*${oraowner} " | grep -v grep | wc -l)" -eq 0 ] then echo "Foglight is not running" >> ${LOG} ; echo "" >> ${LOG} else FOGLIGHTBASE=`ps -ef | grep -i foglight | grep "^.*${oraowner} " | grep -v grep | sed -n 's/.*\(...............................................\/foglight\/fgl_5\).*/\1/p' | awk '{ print $NF }' | tail -1` if [[ ! -z $FOGLIGHTBASE ]]; then FOGLIGHTBIN=${FOGLIGHTBASE}/bin/fglam if [[ -f $FOGLIGHTBIN ]]; then $FOGLIGHTBIN --stop >/dev/null sleep 60 echo "$FOGLIGHTBIN -d" > $OUTPUT_DIRECTORY/non_standard_fgl_start.cmd chmod 755 $OUTPUT_DIRECTORY/non_standard_fgl_start.cmd fi fi fi fi } stop_portutil() { echo -e ' \t ' "STOPPING" $what | tee -a ${LOG} if [ "$(cat $OUTPUT_DIRECTORY/portnum.val | wc -l)" != 0 ] then while read portnum do /opt/portdaemon/bin/stop_port_daemon $portnum >/dev/null; sleep 10 done < $OUTPUT_DIRECTORY/portnum.val fi } stop_osw() { echo "STOPPING" $what | tee -a ${LOG} if [ $(ps -ef | grep -i OSW | grep "^.*${oraowner} " | grep -v grep | wc -l) -ne 0 ] then ps -ef | grep -i OSW | grep "^.*${oraowner} " | grep -v grep| grep -v osw | awk 'BEGIN{FS=" "}{print $(NF-3)" "$(NF-2)" "$(NF-1)" "$(NF-0)}' > $OUTPUT_DIRECTORY/start_osw.cmd if [[ -f /oracle/dba/diagtools/oswbb/stopOSWbb.sh ]]; then /oracle/dba/diagtools/oswbb/stopOSWbb.sh >/dev/null sleep 5 fi # Non standard path OSW_PIDVALUE=`ps -e | grep -i OSWatcher.sh | awk '{print $1}'` OSW_BASEPATH=`ls -l /proc/$OSW_PIDVALUE/cwd | awk '{print $NF}'` OSWNONSTOP=$OSW_BASEPATH/stopOSWbb.sh if [[ -f $OSWNONSTOP ]]; then $OSWNONSTOP >/dev/null sleep 1 fi else touch $OUTPUT_DIRECTORY/start_osw.cmd fi } ###################### # DBFS and OGG Support ###################### stop_ogg() { echo "STOPPING" $what | tee -a ${LOG} #Initialise any previous gg config files if [[ -f ${OUTPUT_DIRECTORY}/gg_config.txt ]]; then rm ${OUTPUT_DIRECTORY}/gg_config.txt fi if [[ -f ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm ]]; then rm ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm fi # Set Ora env ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s` export ORAENV_ASK=NO >/dev/null; if [[ ! -z $ORACLE_SID ]]; then . oraenv >/dev/null else ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s| tail -1` . oraenv >/dev/null fi ps -ef | grep -v grep | grep "mgr PARAMFILE" | grep "^.*${oraowner} " | sed -n 's/.*\(...................................................................\/....prm \).*/\1/p' | awk '{ print $NF }' | grep -v "\.\.\.\.mgr.prm" | while read GG_MGRPROC do # Proceed only if Golden Gate Manager is running if [[ ! -z $GG_MGRPROC ]]; then GG_HOME=`echo $GG_MGRPROC | sed 's/\/dirprm\/mgr.prm//g' | sed 's/\/dirprm\/MGR.prm//g'` ############################# LOCAL_NODE=`hostname -s` # Loop through any GG CRS res and shut them down if [[ -f ${ORACLE_HOME}/bin/crsctl ]]; then ${ORACLE_HOME}/bin/crsctl stat res -p |grep "^NAME=" | grep -iE 'gg|golden' | grep -v vip | grep -v "\.svc" | grep -v "\.db" | grep -v "ora\." | cut -d"=" -f2 -s | while read CRS_RES_GG do if [[ ! -z $CRS_RES_GG ]]; then CRS_STATE=`${ORACLE_HOME}/bin/crsctl stat res $CRS_RES_GG | grep "STATE=" | awk '{ print $1 }' | cut -d"=" -f2 -s` if [[ "$CRS_STATE" == "ONLINE" ]]; then echo "${ORACLE_HOME}/bin/crsctl stop res $CRS_RES_GG" >> ${LOG} ${ORACLE_HOME}/bin/crsctl stop res $CRS_RES_GG >> ${LOG} sleep 60 # Capture gg start config for each GG_HOME on this node echo "GGCRS@${CRS_RES_GG}:${GG_HOME}:${LOCAL_NODE}" >> ${OUTPUT_DIRECTORY}/gg_config.txt if [[ -n `find ${GG_HOME}/dirprm/ -maxdepth 1 -iname mgr.prm` ]]; then if [[ -f ${GG_HOME}/dirprm/mgr.prm ]]; then grep -i "AUTOSTART " ${GG_HOME}/dirprm/mgr.prm | grep -v "^#" | grep -v "^--" >> ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm else grep -i "AUTOSTART " ${GG_HOME}/dirprm/MGR.prm | grep -v "^#" | grep -v "^--" >> ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm fi fi fi fi #sleep 5 done fi ############################# # Check to see if GG mgr is still running from this GG_HOME - if so shutdown manually .. if [[ -f ${GG_HOME}/dirpcs/MGR.pcm ]]; then if [[ -f ${OUTPUT_DIRECTORY}/pre_gg_inst.log ]]; then ORACLE_GG_SID=`cat ${OUTPUT_DIRECTORY}/pre_gg_inst.log | grep "PRE_OGG_DBINST:" | cut -d":" -f3 -s | tail -1` fi if [[ ! -z $ORACLE_GG_SID ]]; then ORACLE_SID=$ORACLE_GG_SID . oraenv else ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s | tail -1` if [[ ! -z $ORACLE_SID ]]; then . oraenv fi fi ${GG_HOME}/ggsci << EOF >>${LOG} stop * stop mgr ! exit EOF sleep 60 echo "GGNOCRS:${GG_HOME}:${LOCAL_NODE}" >> ${OUTPUT_DIRECTORY}/gg_config.txt if [[ -n `find ${GG_HOME}/dirprm/ -maxdepth 1 -iname mgr.prm` ]]; then if [[ -f ${GG_HOME}/dirprm/mgr.prm ]]; then grep -i "AUTOSTART " ${GG_HOME}/dirprm/mgr.prm | grep -v "^#" | grep -v "^--" >> ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm else grep -i "AUTOSTART " ${GG_HOME}/dirprm/MGR.prm | grep -v "^#" | grep -v "^--" >> ${OUTPUT_DIRECTORY}/pre_stop_gg_autostart.prm fi fi fi else echo " No Oracle Golden Gate processes detected on this host ... " >> ${LOG} fi done } stop_dbfs() { echo "STOPPING" $what | tee -a ${LOG} #Initialise any previous dbfs config files if [[ -f ${OUTPUT_DIRECTORY}/dbfs_config.txt ]]; then rm ${OUTPUT_DIRECTORY}/dbfs_config.txt fi # Set Ora env ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF}'` export ORAENV_ASK=NO >/dev/null; if [[ ! -z $ORACLE_SID ]]; then . oraenv >/dev/null else ORACLE_SID=`ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s | tail -1` . oraenv >/dev/null fi ps -ef | grep -v grep | grep "dbfs_client" | grep "^.*${oraowner} " | sed -n 's/.*\(................................................................\/bin\/dbfs_client\).*/\1/p' | awk '{ print $NF }' | grep -v "\.\.\.\.dbfs_client" | sort -u | while read DBFS_PROC do # Proceed only if DBFS is running if [[ ! -z $DBFS_PROC ]]; then #Check if this dbfs is setup as a crs resource DBFS_HOME=`echo $DBFS_PROC | sed 's/\/bin\/dbfs_client//g'` ############################# LOCAL_NODE=`hostname -s` if [[ -f ${ORACLE_HOME}/bin/crsctl ]]; then # Loop through any DBFS CRS res and shut them down ${ORACLE_HOME}/bin/crsctl stat res -p |grep "^NAME=" | grep -i dbfs | grep -v "\.svc" | grep -v "\.db" | grep -v "ora\." | cut -d"=" -f2 -s | while read CRS_RES_DBFS do if [[ ! -z $CRS_RES_DBFS ]]; then CRS_STATE=`${ORACLE_HOME}/bin/crsctl stat res $CRS_RES_DBFS | grep "STATE=" | awk '{ print $1 }' | cut -d"=" -f2 -s` if [[ "$CRS_STATE" == "ONLINE" ]]; then echo "DBFS CRS Resource: $CRS_RES_DBFS was detected. Now stopping this resource ..." >>${LOG} echo "${ORACLE_HOME}/bin/crsctl stop res $CRS_RES_DBFS -f" >>${LOG} ${ORACLE_HOME}/bin/crsctl stop res $CRS_RES_DBFS -f >>${LOG} # Capture dbfs start config for each DBFS_HOME on this node echo "DBFSCRS@${CRS_RES_DBFS}:${DBFS_HOME}:${LOCAL_NODE}" >> ${OUTPUT_DIRECTORY}/dbfs_config.txt else echo "" >>${LOG} echo "DBFS CRS Resource: $CRS_RES_DBFS was detected but found to be in $CRS_STATE STATE ... No action taken! " >>${LOG} echo "" >>${LOG} fi fi sleep 30 done fi ############################# # Check to see if dbfs is still running from this DBFS_HOME - if so shutdown manually .. if [ $(ps -ef | grep "^.*${oraowner} " | grep -v grep | grep "${DBFS_HOME}/bin/dbfs_client" | wc -l) -ne 0 ]; then #get DBFS_MOUNT #DBFS_MOUNT=`ps -ef | grep "^.*${oraowner} " | grep -v grep | grep "dbfs_client" | awk '{ print $NF }'` ps -ef | grep "^.*${oraowner} " | grep -v grep | grep "${DBFS_HOME}/bin/dbfs_client" | awk '{ print $NF }' | while read DBFS_MOUNT do if [[ ! -z $DBFS_MOUNT ]]; then echo "" >>${LOG} echo "Will Try to stop dbfs processes manually. Because either dbfs CRS resources not found OR DBFS still running even after CRS resource stopped .." >>${LOG} echo "Manually Stopping dbfs mount dir: $DBFS_MOUNT ..." >>${LOG} echo "/bin/fusermount -u -z $DBFS_MOUNT" >>${LOG} /bin/fusermount -u -z $DBFS_MOUNT >>${LOG} echo "" >>${LOG} fi sleep 10 # Capture dbfs start config for each GG_HOME on this node if [[ -f ${OUTPUT_DIRECTORY}/dbfs_config.txt ]]; then CHK_DBFSHOME_CONFIGFILE=`grep ":${DBFS_HOME}:" ${OUTPUT_DIRECTORY}/dbfs_config.txt` fi if [[ -z $CHK_DBFSHOME_CONFIGFILE ]]; then echo "DBFSNOCRS:${DBFS_HOME}:${LOCAL_NODE}" >> ${OUTPUT_DIRECTORY}/dbfs_config.txt fi done #Check if any dbfs process still running on this host and kill it .. ps -ef | grep "^.*${oraowner} " | grep -v grep | grep "${DBFS_HOME}/bin/dbfs_client" | awk '{ print $2 }' | while read DBFS_PID do if [[ ! -z $DBFS_PID ]]; then echo "" >>${LOG} echo "No Luck ... Looks like below DBFS OSPID:$DBFS_PID is still Running! ..." >>${LOG} echo "ps -ef | grep -v grep | grep $DBFS_PID | grep dbfs_client =>" >>${LOG} ps -ef | grep -v grep | grep "$DBFS_PID" | grep dbfs_client >> ${LOG} echo "" >>${LOG} echo "Will try to KILL it .." >>${LOG} echo "kill -9 $DBFS_PID" >>${LOG} kill -9 $DBFS_PID >> ${LOG} sleep 5 echo "Checking if DBFS OSPID:$DBFS_PID has gone ..." >>${LOG} echo "ps -ef | grep -v grep | grep $DBFS_PID =>" >>${LOG} ps -ef | grep -v grep | grep "$DBFS_PID" >> ${LOG} echo "" >>${LOG} fi done fi else echo " No dbfs processes detected on this host ... " >/dev/null fi done } fgl_Autosys_blackout() { if [[ $OS != "AIX" ]]; then export EFS_BLK_SCRIPT=/efs/dist/gmrtdba/dbascripts/scripts/common/bl_fgl_autosys_blkout.ksh #Set Env with any running Instance; for SID in `ps -ef | grep pmon | sort -k9 | grep "^.*${oraowner} " | grep -v grep | grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | awk '{ print $NF }' | cut -d"_" -f3,4 -s | tail -1` do export ORACLE_SID=${SID} >/dev/null export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null done if [[ ! -z $ORACLE_SID ]]; then if [[ -f $EFS_BLK_SCRIPT ]]; then echo "Attempting to apply HOST level BLACKOUTS for Foglight and Autosys via efs script: bl_fgl_autosys_blkout.ksh " | tee -a ${LOG} echo " Foglight_Autosys_blackout Call Starting @ `date` " >> ${LOG} export BLK_USR=ORA_BL_AUTO export BLK_PHOST=`hostname -s` export BLK_HOURS=4 export BLK_TYPE=h sh $EFS_BLK_SCRIPT << ANSWERS ${BLK_USR} ${BLK_TYPE} ${BLK_PHOST} ${BLK_HOURS} ANSWERS echo " Foglight_Autosys_blackout Call Finished @ `date` " >> ${LOG} echo "" >> ${LOG} fi fi fi } #INSERT INTO REPOSITORY DATABASE #ASSIGNING THE OUTPUT VARIABLES assign_log() { if [ -s $OUTPUT_DIRECTORY/pre_stop_crs.log ] then crs_output=`cat $OUTPUT_DIRECTORY/pre_stop_crs.log` else crs_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_asm.log ] then asm_output=`cat $OUTPUT_DIRECTORY/pre_stop_asm.log` else asm_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_esm.log ] then esm_agent_output=`cat $OUTPUT_DIRECTORY/pre_stop_esm.log` else esm_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dma.log ] then dma_agent_output=`cat $OUTPUT_DIRECTORY/pre_stop_dma.log` else dma_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_lsnr.log ] then listener_output=`cat $OUTPUT_DIRECTORY/pre_stop_lsnr.log` else listener_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dbinst.log ] then db_instance_output=`cat $OUTPUT_DIRECTORY/pre_stop_dbinst.log` else db_instance_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/unidb:inst.log ] then db_unique_output=`cat $OUTPUT_DIRECTORY/unidb:inst.log` else db_unique_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dbopen.log ] then db_open_output=`cat $OUTPUT_DIRECTORY/pre_stop_dbopen.log` else db_open_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dbopenro.log ] then db_openro_output=`cat $OUTPUT_DIRECTORY/pre_stop_dbopenro.log` else db_openro_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dbmount.log ] then db_mount_output=`cat $OUTPUT_DIRECTORY/pre_stop_dbmount.log` else db_mount_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_dbservices.log ] then service_alignment_output=`cat $OUTPUT_DIRECTORY/pre_stop_dbservices.log` else service_alignment_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_mrp.log ] then mrp_output=`cat $OUTPUT_DIRECTORY/pre_stop_mrp.log` else mrp_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_agent.log ] then oem_agent_output=`cat $OUTPUT_DIRECTORY/pre_stop_agent.log` else oem_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_portutil.log ] then port_utility_output=`cat $OUTPUT_DIRECTORY/pre_stop_portutil.log` else port_utility_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_fgl.log ] then foglight_output=`cat $OUTPUT_DIRECTORY/pre_stop_fgl.log` else foglight_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_osw.log ] then os_watcher_output=`cat $OUTPUT_DIRECTORY/pre_stop_osw.log` else os_watcher_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/pre_stop_usb.log ] then usb_output=`cat $OUTPUT_DIRECTORY/pre_stop_usb.log` else usb_output="no_status" fi if [ -s /oracle/dba/foglight/fgl_5/bin/fglam ] then fglam_output=`/oracle/dba/foglight/fgl_5/bin/fglam --check-connection` else fglam_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/server_type.log ] then instance_type=`cat $OUTPUT_DIRECTORY/server_type.log` else instance_type="no_status" fi if [ -s $OUTPUT_DIRECTORY/version_executed_status.log ] then script_version=`cat $OUTPUT_DIRECTORY/version_executed_status.log` else script_version="no_status" fi } insert_repdb() { for what in fgl osw agent portutil lsnr mrp dbinst asm do if [ -f $OUTPUT_DIRECTORY/stopped_$what.log ] then if [ "$(cat $OUTPUT_DIRECTORY/stopped_$what.log)" = yes ] then eval var_$what="success" fi if [ "$(cat $OUTPUT_DIRECTORY/stopped_$what.log)" = no ] then eval var_$what="failure" fi else eval var_$what="no_status" fi done var_dma="na" var_esm="na" var_crs="na" if [[ $server_type = "rac_11g" ]] || [[ $server_type = "norac_asm11g" ]] then var_lsnr="na" var_asm="na" elif [[ $server_type = "norac_noasm" ]] then var_asm="na" fi #PREPARING THE INSERT STATEMENT if [ $(cat /etc/oratab | grep oracle | grep -v -i asm | grep -v -i crs | grep -v -i oem | grep -v "#" | awk 'BEGIN{FS=":"}{print $1}' | head -1 | wc -l) = 1 ] then export ORACLE_SID=`cat /etc/oratab | grep oracle | grep -v -i asm | grep -v -i crs | grep -v -i oem | grep -v "#" | awk 'BEGIN{FS=":"}{print $1}' | head -1` export ORAENV_ASK=NO >/dev/null . oraenv >/dev/null $ORACLE_HOME/bin/sqlplus -s OSH_SEH/dbaas_operations1@SUNDVD94 << EOFSTATUS set echo off; set head off; set feedback off; insert into OSH_SEH.dbss_log (DBSS_ID, SCRIPT_VERSION, INSTANCE_TYPE, STOP_OR_START, CRS_OR_DB, SERVER_NAME, SERVER_TIMESTAMP, CRS, ASM, LISTENER, DB_INSTANCE, MRP_PROCESS, ESM_AGENT, DMA_AGENT, OEM_AGENT, PORT_UTILITY, FOGLIGHT, OS_WATCHER, SENT_MAIL, CRS_OUTPUT, ASM_OUTPUT, LISTENER_OUTPUT, DB_INSTANCE_OUTPUT, DB_OPEN_OUTPUT, DB_OPENRO_OUTPUT, DB_MOUNT_OUTPUT, SERVICE_ALIGNMENT_OUTPUT, MRP_OUTPUT, ESM_AGENT_OUTPUT, DMA_AGENT_OUTPUT, OEM_AGENT_OUTPUT, PORT_UTILITY_OUTPUT, FOGLIGHT_OUTPUT, OS_WATCHER_OUTPUT, USB_OUTPUT, FGLAM_OUTPUT, DB_UNIQUE_OUTPUT) values (DBSS_LOG_SEQ.nextval, '$script_version', '$instance_type', 'stop', 'db', '$(hostname -f)', '$timevalue', '$var_crs', '$var_asm', '$var_lsnr', '$var_dbinst', '$var_mrp', '$var_esm', '$var_dma', '$var_agent', '$var_portutil', '$var_fgl', '$var_osw', 0, '$crs_output', '$asm_output', '$listener_output', '$db_instance_output', '$db_open_output', '$db_openro_output', '$db_mount_output', '$service_alignment_output', '$mrp_output', '$esm_agent_output', '$dma_agent_output', '$oem_agent_output', '$port_utility_output', '$foglight_output', '$os_watcher_output', '$usb_output', '$fglam_output', '$db_unique_output'); commit; EOFSTATUS fi } # STOP THE APPROPRIATE SERVICES BASED ON SERVER TYPE echo ""; echo "Please wait while the services are brought down... "; echo "" case $server_type in "rac_12c") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "---------------------------> THIS IS A 12c CLUSTERWARE SYSTEM <------------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent mrp ogg dbfs do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus collect_dbservices # Stop and disable db services before the instance for RAC stop_dbservices stop_db_rac; when=post; what=dbinst; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent mrp ogg dbfs dbinst do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbfs.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "rac_11g") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "---------------------------> THIS IS A 11g CLUSTERWARE SYSTEM <------------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent mrp ogg dbfs do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus collect_dbservices stop_dbservices stop_db_rac; when=post; what=dbinst; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent mrp ogg dbfs dbinst do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbfs.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "rac_10g") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "---------------------------> THIS IS A 10g CLUSTERWARE SYSTEM <------------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent lsnr mrp ogg do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus collect_dbservices stop_db_rac; when=post; what=dbinst; collect_$what; display_pre_post when=pre; what=asm; collect_$what; display_pre_post collect_instancestatus stop_asm_10g; when=post; what=asm; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent lsnr mrp dbinst asm ogg do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_lsnr.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "norac_asm12c") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "-------------------------> THIS IS A NON-RAC SYSTEM BUT WITH ASM 12c <----------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent mrp ogg dbfs lsnr do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus collect_dbservices stop_dbservices stop_db_standalone; when=post; what=dbinst; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent mrp ogg dbfs dbinst lsnr do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ]&& [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbfs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_lsnr.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "norac_asm11g") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "-------------------------> THIS IS A NON-RAC SYSTEM BUT WITH ASM 11g <----------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent mrp ogg dbfs lsnr do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus collect_dbservices stop_db_standalone; when=post; what=dbinst; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent mrp ogg dbfs dbinst lsnr do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ]&& [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbfs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_lsnr.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "norac_asm10g") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "-------------------------> THIS IS A NON-RAC SYSTEM BUT WITH ASM 10g <----------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent lsnr mrp ogg do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus #stop_db_rac; stop_db_standalone; when=post; what=dbinst; collect_$what; display_pre_post when=pre; what=asm; collect_$what; display_pre_post collect_instancestatus stop_asm_10g; when=post; what=asm; collect_$what; display_pre_post echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent lsnr mrp dbinst asm ogg do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_lsnr.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; "norac_noasm") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "--------------------------> THIS IS A NON-RAC & NON-ASM SYSTEM <----------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} why=stop; #Apply FGL and Autosys Blackout for defined X Hours fgl_Autosys_blackout for what in fgl osw agent lsnr mrp ogg do when=pre; collect_$what; display_pre_post stop_$what; when=post; collect_$what; display_pre_post done echo "" >> ${LOG} if [[ "$RH_VER" == 7.* ]]; then when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus echo "***********" >> ${LOG} echo "RH7 System .. No db stop will be performed here .." >> ${LOG} echo "oracle_db.service Status: " >> $LOG systemctl status oracle_db.service | grep "Active: " >> $LOG echo "***********" >> ${LOG} else when=pre; what=dbinst; collect_$what; display_pre_post collect_instancestatus stop_db_standalone; when=post; what=dbinst; collect_$what; display_pre_post fi echo "" >> ${LOG} echo " " echo "******************** SUMMARY ********************" echo "" for what in fgl osw agent lsnr mrp dbinst ogg do stopped_status done if [ "$(cat $OUTPUT_DIRECTORY/stopped_fgl.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_osw.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_agent.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_lsnr.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_mrp.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_dbinst.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/stopped_ogg.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} else echo "0" > $OUTPUT_DIRECTORY/bl_stop_flag.log echo "" echo "ATTENTION : Some services didn't stop. Please check" | tee -a ${LOG} fi assign_log insert_repdb echo "**************************************************" ;; *) echo "Invalid Selection : $server_type " esac # RENAME THE LOGS chmod 755 $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 chmod 755 $OUTPUT_DIRECTORY/post_stop*.log 1> /dev/null 2>&1 chmod 755 $OUTPUT_DIRECTORY/stopped*.log 1> /dev/null 2>&1 chmod 755 $OUTPUT_DIRECTORY/bl_stop*.log 1> /dev/null 2>&1 chown $oracred $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 chown $oracred $OUTPUT_DIRECTORY/post_stop*.log 1> /dev/null 2>&1 chown $oracred $OUTPUT_DIRECTORY/stopped*.log 1> /dev/null 2>&1 chown $oracred $OUTPUT_DIRECTORY/bl_stop*.log 1> /dev/null 2>&1 filename=$(echo $(hostname) | cut -d. -f1)_$(date '+%m%d%Y_%H%M%S') mv ${LOG} $OUTPUT_DIRECTORY/stop_$filename.log echo "" echo "" echo "****************************************************************************************************"; echo "Please check the detailed STOP report at $OUTPUT_DIRECTORY/stop_$filename.log" echo "****************************************************************************************************"; echo ""