################################################################# # # ################################################################# # # # Modified by EMEA OracleDBA Team for enhancements & automation # # APRIL 2016 # # # ################################################################# # # # USAGE : To be executed as root user # # (pbrun to oracle or pboracle) # # # # Manual execution # # sh bl_start_crs.ksh # # # # Via job scheduler tools and by-passing the prompt # # sh bl_start_crs.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 export PATH=$PATH:/usr/local/bin 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 if [ "$(ps -ef | grep -i mysql | grep -v grep | wc -l)" -ge 1 ] then echo "This is a MySQL Database Server" exit 0 fi # CHECK IF THE USER IS ROOT echo " " if [ $(whoami) != "root" ] then echo "ATTENTION : Please execute this script as root user" exit 0; fi # SCRIPT AND OUTPUT DIRECTORIES INITIALIZATION SCRIPT_DIRECTORY=/efs/dist/gmrtdba/dbascripts/scripts/common 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 # Check if user really wants to START the services if [ $# -eq 0 ] then read -r -p "Are you sure you want to START the Clusterware services ? [y/n] " response if [ $response = y ] then echo ""; echo "Please wait while the services are started up... "; echo "" else exit; >/dev/null fi elif [ $1 == y ] then echo ""; echo "Please wait while the services are started up... "; echo "" else exit; >/dev/null fi export server_type=$(cat $OUTPUT_DIRECTORY/server_type.log) collect_esm() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep -i esm | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log elif [ $(( (`date +%s` - `stat -L --format %Y $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log`) > (2880*60) ) ) = 1 ] then rm -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep -i esm | 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 esm | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log fi fi elif [ $when = post ] then ps -ef | grep -i esm | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_dma() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep opsware | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log elif [ $(( (`date +%s` - `stat -L --format %Y $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log`) > (2880*60) ) ) = 1 ] then rm -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep opsware | 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 opsware | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".lo g fi fi elif [ $when = post ] then ps -ef | grep opsware | grep -v grep | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } 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 -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 -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 -v grep | sed -n 's/.*\(tnslsnr.*\).*/\1/p' | awk '{ print $2 }' | s ed '/^\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 elif [ $when = post ] then ps -ef | grep lsnr |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_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 -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF }'>$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 pmon | sort -k9 | grep -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $N F}'>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else for ASM in `ps -ef | grep pmon | sort -k9 | 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 -v grep | grep "+ASM" | grep -v onitor | awk 'BEGIN{FS="_"}{print $NF }'>$OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } collect_crs() { if [ $when = pre ] then if [ ! -f $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ] then touch $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log ps -ef | grep crs | grep -v grep | grep -v tfa | wc -l > $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 crs | grep -v grep | grep -v tfa | 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 crs | grep -v grep | grep -v tfa | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_ "$what".log fi fi elif [ $when = post ] then ps -ef | grep crs | grep -v grep | grep -v tfa | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log else sleep 0 fi } #Portdaemon detection 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 #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 "portdaemon.pl" | grep -v grep | grep port | wc -l > $OUTPUT_DIRECTORY/"$when"_"$wh y"_"$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/"$whe n"_"$why"_"$what".log fi fi elif [ $when = post ] then ps -ef | grep "portdaemon.pl" | grep -v grep | grep port | wc -l > $OUTPUT_DIRECTORY/"$when"_"$why"_"$what ".log else sleep 0 fi } display_pre_post() { if [ $when = pre ] then if [ $what = asm ] || [ $what = lsnr ] || [ $what = portutil ] 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 ${LO G} fi elif [ $what = crs ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" -lt 3 ] then echo "PRE stop" $what "running " ":" "NO" | tee -a ${LOG} else echo "PRE stop" $what "running " ":" "YES" | tee -a ${LOG} fi fi elif [ $when = post ] then if [ $what = asm ] || [ $what = lsnr ] || [ $what = portutil ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" = 0 ] || [ ! -s $OUTPUT_DIRECTORY/"$when"_"$why" _"$what".log ] then echo "POST start" $what "running " ":" "NO" | tee -a ${LOG} else echo "POST start" $what "running " ":" $(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log) | tee -a ${ LOG} fi elif [ $what = crs ] then if [ "$(cat $OUTPUT_DIRECTORY/"$when"_"$why"_"$what".log)" -lt 3 ] then echo "POST start" $what "running " ":" "NO" | tee -a ${LOG} else echo "POST start" $what "running " ":" "YES" | tee -a ${LOG} fi fi fi } started_status() { if [ $what = asm ] || [ $what = lsnr ] || [ $what = portutil ] then rm -f $OUTPUT_DIRECTORY/diff_file; rm -f $OUTPUT_DIRECTORY/diff_1; rm -f $OUTPUT_DIRECTORY/diff_2 cat $OUTPUT_DIRECTORY/pre_stop_$what.log | sort > $OUTPUT_DIRECTORY/diff_1; cat $OUTPUT_DIRECTORY/post_start_$what.log | sort > $OUTPUT_DIRECTORY/diff_2; diff -b -i -w $OUTPUT_DIRECTORY/diff_1 $OUTPUT_DIRECTORY/diff_2 > $OUTPUT_DIRECTORY/diff_file #chown oracle:dba $OUTPUT_DIRECTORY/diff_file chmod 777 $OUTPUT_DIRECTORY/diff_file if [ ! -s $OUTPUT_DIRECTORY/diff_file ] then echo "yes" > $OUTPUT_DIRECTORY/started_$what.log | tee -a ${LOG} echo "OK : pre-post status matches for $what" else echo "no" > $OUTPUT_DIRECTORY/started_$what.log | tee -a ${LOG} echo "ATTENTION : $what didn't start. Please check" fi elif [ $what = crs ] then if [ "$(cat $OUTPUT_DIRECTORY/post_start_"$what".log)" -gt 5 ] || [ ! -s $OUTPUT_DIRECTORY/post_start_"$what".log ] then echo "yes" > $OUTPUT_DIRECTORY/started_$what.log echo "OK : pre-post status matches for $what" else echo "no" > $OUTPUT_DIRECTORY/started_$what.log echo "ATTENTION : $what didn't start. Please check" fi fi } start_esm() { if [ "$(cat $OUTPUT_DIRECTORY/pre_stop_esm.log)" = 0 ] then echo "ESM Agent was down even before the activity, so didn't bring it up" >> ${LOG}; echo -e "\n" > > ${LOG} elif [ "$(ps -ef | grep esm | grep -v grep | wc -l)" != 0 ] then echo "ESM Agent is already running" >> ${LOG}; echo -e "\n" >> ${LOG} else /etc/init.d/esmrc start >/dev/null; sleep 2 fi } start_dma() { if [ "$(cat $OUTPUT_DIRECTORY/pre_stop_dma.log)" = 0 ] then echo "DMA Agent was down even before the activity, so didn't bring it up" >> ${LOG}; echo -e "\n" > > ${LOG} elif [ "$(ps -ef | grep opsware | grep -v grep | wc -l)" != 0 ] then echo "DMA Agent is already running" >> ${LOG}; echo -e "\n" >> ${LOG} else /etc/init.d/opsware-agent start >/dev/null; sleep 15 fi } start_has() { ORACLE_SID=`cat /etc/oratab | awk 'BEGIN{FS=":"}{print $1}' | grep ASM | grep -v "#"` export ORAENV_ASK=NO >/dev/null; . oraenv >/dev/null crsctl start has >> ${LOG} ; echo "" >> ${ LOG} sleep 10 if [ "$(crsctl check has | grep online | wc -l)" -ne 0 ] then echo "Clusterware Services started" >> ${LOG}; echo "" >> ${LOG} crsctl enable has >/dev/null crs_en_dis=`cat /etc/oracle/scls_scr/$(echo $(hostname) | cut -d. -f1)/root/crsstart | awk 'BEGIN{ FS=":"}{print $1}'` echo "HAS status : $crs_en_dis" >> ${LOG}; echo "" >> ${LO G} echo "HAS is now enabled" >> ${LOG} else echo "ATTENTION : Clusterware services do not appear to have started properly" >> ${LOG} ; echo " " >> ${LOG} echo "ATTENTION : CRS not enabled" >> ${LOG} ; echo "" >> ${L OG} fi } start_crs() { ORACLE_SID=`cat /etc/oratab | awk 'BEGIN{FS=":"}{print $1}' | grep CRS | grep -v "#"` export ORAENV_ASK=NO >/dev/null; . oraenv >/dev/null crsctl start crs >> ${LOG} ; echo "" >> ${ LOG} sleep 10 if [ "$(crsctl check crs | grep online || crsctl check crs | grep healthy | wc -l)" -ne 0 ] then echo "Clusterware Services started" >> ${LOG}; echo "" >> ${LOG} crsctl enable crs crs_en_dis=`cat /etc/oracle/scls_scr/$(echo $(hostname) | cut -d. -f1)/root/crsstart | awk 'BEGIN{ FS=":"}{print $1}'` echo "CRS status : $crs_en_dis" >> ${LOG}; echo "" >> ${LO G} echo "CRS is now enabled" >> ${LOG} else echo "ATTENTION : Clusterware services do not appear to have started properly" >> ${LOG} ; echo " " >> ${LOG} echo "ATTENTION : CRS not enabled" >> ${LOG} ; echo "" >> ${L OG} fi } start_portutil() { # Initialise any previous Portdaemon start files if [[ -f $OUTPUT_DIRECTORY/Portdaemon_start.sh ]]; then rm $OUTPUT_DIRECTORY/Portdaemon_start.sh fi if [[ -f $OUTPUT_DIRECTORY/Portdaemon_config.txt ]]; then cat $OUTPUT_DIRECTORY/Portdaemon_config.txt | while read PORT_CONFIG do PORT_USER=`echo $PORT_CONFIG | cut -d":" -f1 -s` PORT_PROC=`echo $PORT_CONFIG | cut -d":" -f2 -s` PORT_DIR=`dirname $PORT_PROC` PORT_NUMB=`echo $PORT_CONFIG | cut -d":" -f3 -s` # Gen Command for starting Portdaemon for this POrt .. echo "su - $PORT_USER -c 'sh ${PORT_DIR}/start_port_daemon ${PORT_NUMB}'" >> $OUTPUT_DIRECTORY/Portdaemon_start .sh done # Loop through and stop all detected Portdaemon(s) if [[ -f $OUTPUT_DIRECTORY/Portdaemon_start.sh ]]; then chmod 744 $OUTPUT_DIRECTORY/Portdaemon_start.sh sh $OUTPUT_DIRECTORY/Portdaemon_start.sh > /dev/null 2>&1 fi else echo "Portdaemon services not detected on this host" >> ${LOG}; echo "" >> ${LOG} fi } enable_standalone_autostart() { DDMMYY=`date '+%m%d%y_%H:%M:%S'` if [[ -f /etc/oratab_bl_backup ]]; then if [[ -f /etc/oratab ]]; then oracred=`ls -l /etc/oratab | awk '{ print $3":"$4 }'` mv /etc/oratab $OUTPUT_DIRECTORY/oratab_no_autostart_${DDMMYY} fi mv /etc/oratab_bl_backup /etc/oratab chown $oracred /etc/oratab fi if [[ -f /etc/lsnrtab_bl_backup ]]; then if [[ -f /etc/lsnrtab ]]; then oracred=`ls -l /etc/lsnrtab | awk '{ print $3":"$4 }'` mv /etc/lsnrtab $OUTPUT_DIRECTORY/lsnrtab_no_autostart_${DDMMYY} fi mv /etc/lsnrtab_bl_backup /etc/lsnrtab chown $oracred /etc/lsnrtab fi } start_rh7_dbserv() { if [[ -f /etc/redhat-release ]] && [[ "$RH_VER" == 7.* ]]; then export RH7_ORASTR=`systemctl status oracle_db.service | grep "Active: " | awk '{ print $1,$2,$3 }'` if [[ "${RH7_ORASTR}" != "Active: active (running)" ]]; then echo "" >> $LOG echo "########################################################################" >> $LOG echo "Note: RedHat7 service: oracle_db.service will be started here ... " >> $LOG echo "" >> $LOG echo "PRE Startup Status: " >> $LOG systemctl status oracle_db.service | grep "Active: " >> $LOG echo "" >> $LOG echo " => Attempting to Start it ..." >> $LOG echo "" >> $LOG systemctl start oracle_db.service >> $LOG sleep 2 echo "POST Startup Status: " >> $LOG systemctl status oracle_db.service | grep "Active: " >> $LOG echo "########################################################################" >> $LOG echo "" >> $LOG else echo "" >> $LOG echo "########################################################################" >> $LOG echo "NO ACTION TAKEN: RedHat7 service: oracle_db.service was already found to be in ACTIVE state " >> $LOG systemctl status oracle_db.service | grep "Active: " >> $LOG echo "########################################################################" >> $LOG echo "" >> $LOG fi fi } # Remove the temporary log file rm -f $OUTPUT_DIRECTORY/start_crs.log # Assign a new log file LOG=$OUTPUT_DIRECTORY/start_crs.log; echo "" >> ${LOG}; #INSERT INTO REPOSITORY DATABASE #ASSIGNING THE OUTPUT VARIABLES assign_log() { if [ -s $OUTPUT_DIRECTORY/post_start_crs.log ] then crs_output=`cat $OUTPUT_DIRECTORY/post_start_crs.log` else crs_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_asm.log ] then asm_output=`cat $OUTPUT_DIRECTORY/post_start_asm.log` else asm_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_esm.log ] then esm_agent_output=`cat $OUTPUT_DIRECTORY/post_start_esm.log` else esm_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dma.log ] then dma_agent_output=`cat $OUTPUT_DIRECTORY/post_start_dma.log` else dma_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_lsnr.log ] then listener_output=`cat $OUTPUT_DIRECTORY/post_start_lsnr.log` else listener_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dbinst.log ] then db_instance_output=`cat $OUTPUT_DIRECTORY/post_start_dbinst.log` else db_instance_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dbopen.log ] then db_open_output=`cat $OUTPUT_DIRECTORY/post_start_dbopen.log` else db_open_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dbopenro.log ] then db_openro_output=`cat $OUTPUT_DIRECTORY/post_start_dbopenro.log` else db_openro_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dbmount.log ] then db_mount_output=`cat $OUTPUT_DIRECTORY/post_start_dbmount.log` else db_mount_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_dbservices.log ] then service_alignment_output=`cat $OUTPUT_DIRECTORY/post_start_dbservices.log` else service_alignment_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_mrp.log ] then mrp_output=`cat $OUTPUT_DIRECTORY/post_start_mrp.log` else mrp_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_agent.log ] then oem_agent_output=`cat $OUTPUT_DIRECTORY/post_start_agent.log` else oem_agent_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_portutil.log ] then port_utility_output=`cat $OUTPUT_DIRECTORY/post_start_portutil.log` else port_utility_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_fgl.log ] then foglight_output=`cat $OUTPUT_DIRECTORY/post_start_fgl.log` else foglight_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_osw.log ] then os_watcher_output=`cat $OUTPUT_DIRECTORY/post_start_osw.log` else os_watcher_output="no_status" fi if [ -s $OUTPUT_DIRECTORY/post_start_usb.log ] then usb_output=`cat $OUTPUT_DIRECTORY/post_start_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 dma esm lsnr asm crs 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 if [[ $server_type = "rac_10g" ]] then var_lsnr="na" var_asm="na" elif [[ $server_type = "norac_asm10" ]] || [[ $server_type = "norac_noasm" ]] then var_dma="na" var_esm="na" var_lsnr="na" var_asm="na" var_crs="na" fi for what in fgl osw agent portutil mrp dbinst do eval var_$what="na" done #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 'B EGIN{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) values (DBSS_LOG_SEQ.nextval, '$script_version', '$instance_type', 'start', 'crs', '$(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'); commit; EOFSTATUS fi } case $server_type in "rac_12c") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "---------------------------> THIS IS A 12c CLUSTERWARE SYSTEM <------------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} if [ "$(ps -ef | grep pmon | grep -v grep |grep -v "+ASM" |grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -eq 0 ] then why=stop; for what in esm dma asm lsnr crs portutil do when=pre; collect_$what; display_pre_post done echo ""; echo "Starting HAS"; echo ""; start_has echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil if [[ $OS != "AIX" ]]; then echo "Waiting for 4 minutes to allow all the CRS processes to come up" for i in {1..4} do echo -n -e ' ' for i in {1..60} do echo -n ".";sleep 1; done echo ""; done else echo "Waiting for 4 minutes to allow all the CRS processes to come up" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done echo "" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done fi start_esm start_dma why=start; for what in esm dma asm lsnr crs portutil do when=post; collect_$what; display_pre_post done echo " " echo "******************** SUMMARY ********************" echo "" for what in esm dma lsnr asm crs portutil do started_status done echo "" #Avoid error for SCAN lsnr if [[ ! -f $OUTPUT_DIRECTORY/started_lsnr.log ]]; then touch $OUTPUT_DIRECTORY/started_lsnr.log fi if [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_lsnr .log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.log) " = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" # Deal with lsnr check seperately due to SCAN lsnr elif [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_ls nr.log)" != yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.l og)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" else echo "0" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "ATTENTION : Some services didn't start. Please check" | tee -a ${LOG} echo "" fi else echo "ATTENTION : CRS appears to be running already. Please check." | tee -a ${LOG} echo "" | 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} if [ "$(ps -ef | grep pmon | grep -v grep |grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -eq 0 ] then why=stop; for what in esm dma asm lsnr crs portutil do when=pre; collect_$what; display_pre_post done echo ""; echo "Starting HAS"; echo ""; start_has echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil if [[ $OS != "AIX" ]]; then echo "Waiting for 4 minutes to allow all the CRS processes to come up" for i in {1..4} do echo -n -e ' ' for i in {1..60} do echo -n ".";sleep 1; done echo ""; done else echo "Waiting for 4 minutes to allow all the CRS processes to come up" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done echo "" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done fi start_esm start_dma why=start; for what in esm dma asm lsnr crs portutil do when=post; collect_$what; display_pre_post done echo " " echo "******************** SUMMARY ********************" echo "" for what in esm dma asm crs portutil do started_status done #Avoid error for SCAN lsnr if [[ ! -f $OUTPUT_DIRECTORY/started_lsnr.log ]]; then touch $OUTPUT_DIRECTORY/started_lsnr.log fi echo "" if [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_lsnr .log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.log) " = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" # Deal with lsnr check seperately due to 11g SCAN elif [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_ls nr.log)" != yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.l og)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" else echo "0" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "ATTENTION : Some services didn't start. Please check" | tee -a ${LOG} echo "" fi else echo "ATTENTION : CRS appears to be running already. Please check." | tee -a ${LOG} echo "" | 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} if [ "$(ps -ef | grep pmon | grep -v grep |grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -eq 0 ] then why=stop; for what in esm dma crs portutil do when=pre; collect_$what; display_pre_post done echo ""; echo "Starting CRS"; echo ""; start_crs echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil if [[ $OS != "AIX" ]]; then echo "Waiting for 4 minutes to allow all the CRS processes to come up" for i in {1..4} do echo -n -e ' ' for i in {1..60} do echo -n ".";sleep 1; done echo ""; done else echo "Waiting for 4 minutes to allow all the CRS processes to come up" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done echo "" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done fi start_esm start_dma why=start; for what in esm dma crs portutil do when=post; collect_$what; display_pre_post done echo " " echo "******************** SUMMARY ********************" echo "" for what in esm dma crs portutil do started_status done echo "" if [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" else echo "0" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "ATTENTION : Some services didn't start. Please check" | tee -a ${LOG} echo "" fi else echo "ATTENTION : CRS appears to be running already. Please check." | tee -a ${LOG} echo "" | 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} if [ "$(ps -ef | grep pmon | grep -v grep |grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -eq 0 ] then why=stop; for what in esm dma asm lsnr crs portutil do when=pre; collect_$what; display_pre_post done echo ""; echo "Starting HAS"; echo ""; start_has echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil if [[ $OS != "AIX" ]]; then echo "Waiting for 4 minutes to allow all the CRS processes to come up" for i in {1..4} do echo -n -e ' ' for i in {1..60} do echo -n ".";sleep 1; done echo ""; done else echo "Waiting for 4 minutes to allow all the CRS processes to come up" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done echo "" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done fi start_esm start_dma why=start; for what in esm dma asm lsnr crs portutil do when=post; collect_$what; display_pre_post done echo " " echo "******************** SUMMARY ********************" echo "" for what in esm dma asm lsnr crs portutil do started_status done echo "" if [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_lsnr .log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.log) " = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" else echo "0" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "ATTENTION : Some services didn't start. Please check" | tee -a ${LOG} echo "" fi else echo "ATTENTION : CRS appears to be running already. Please check." | tee -a ${LOG} echo "" | 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} if [ "$(ps -ef | grep pmon | grep -v grep |grep -v "+ASM" | grep -v "\-MGMTDB" | grep -v onitor | wc -l)" -eq 0 ] then why=stop; for what in esm dma asm lsnr crs portutil do when=pre; collect_$what; display_pre_post done echo ""; echo "Starting HAS"; echo ""; start_has echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil if [[ $OS != "AIX" ]]; then echo "Waiting for 4 minutes to allow all the CRS processes to come up" for i in {1..4} do echo -n -e ' ' for i in {1..60} do echo -n ".";sleep 1; done echo ""; done else echo "Waiting for 4 minutes to allow all the CRS processes to come up" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done echo "" i=1 while [[ $i -le 120 ]] ; do echo ".\c";sleep 1; i=$(expr $i + 1) done fi start_esm start_dma why=start; for what in esm dma asm lsnr crs portutil do when=post; collect_$what; display_pre_post done echo " " echo "******************** SUMMARY ********************" echo "" for what in esm dma asm lsnr crs portutil do started_status done echo "" if [ "$(cat $OUTPUT_DIRECTORY/started_asm.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_lsnr .log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_crs.log)" = yes ] && [ "$(cat $OUTPUT_DIRECTORY/started_portutil.log) " = yes ] then echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" else echo "0" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "ATTENTION : Some services didn't start. Please check" | tee -a ${LOG} echo "" fi else echo "ATTENTION : CRS appears to be running already. Please check." | tee -a ${LOG} echo "" | 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} echo " Checking the status of ESM & DMA agents" | tee -a ${LOG}; echo -e "\n" | tee -a ${ LOG} why=stop; for what in esm dma portutil do when=pre; collect_$what; display_pre_post done start_esm start_dma echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil why=start; for what in esm dma portutil do when=post; collect_$what; display_pre_post done echo -e ' \t ' "******************** SUMMARY ********************" echo -e "\n" for what in esm dma do started_status done echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo -e "\n" echo -e ' \t ' "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo -e "\n" assign_log insert_repdb ;; "norac_noasm") echo "" ; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "--------------------------> THIS IS A NON-RAC & NON-ASM SYSTEM <----------------------- " >> ${LOG}; echo "---------------------------------------------------------------------------------------" >> ${LOG}; echo "" >> ${LOG} echo " This script will check/start any Port daemons and Enable Autostart, If RH7 System it will strat Oracle Ser vice - otherwise it has no relevance to this server " | tee -a ${LOG}; echo "" | tee -a ${LOG} why=stop; for what in esm dma portutil do when=pre; collect_$what; display_pre_post done echo " " echo ""; start_esm start_dma echo " " echo "Starting Any Portdaemon Services if any "; echo ""; start_portutil why=start; for what in esm dma portutil do when=post; collect_$what; display_pre_post done for what in esm dma do started_status done echo ""; echo "Enabling Auto-start for this standalone host "; echo ""; enable_standalone_autostart echo "Content of ORATAB on this host : "; echo ""; if [[ -f /etc/oratab ]]; then echo "`cat /etc/oratab | grep -v "^#" | sort -u `" fi echo ""; echo "Content of LSNRTAB on this host : "; echo ""; if [[ -f /etc/lsnrtab ]]; then echo "`cat /etc/lsnrtab | grep -v "^#" | sort -u `" fi if [[ "$RH_VER" == 7.* ]]; then start_rh7_dbserv fi echo ""; echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" assign_log insert_repdb ;; *) echo "Invalid Selection" esac chmod 777 $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/post_start*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/started*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/start_crs*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/bl_start*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/post_start*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/started*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/start_crs*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/bl_start*.log 1> /dev/null 2>&1 if ls $OUTPUT_DIRECTORY/Portdaemon* 1> /dev/null 2>&1; then chmod 777 $OUTPUT_DIRECTORY/Portdaemon* #chown oracle:dba $OUTPUT_DIRECTORY/Portdaemon* fi filename=$(echo $(hostname) | cut -d. -f1)_$(date '+%m%d%Y_%H%M%S') mv ${LOG} $OUTPUT_DIRECTORY/start_crs_$filename.log echo "************************************************************************************************************"; echo "Please check the detailed CRS START report at $OUTPUT_DIRECTORY/start_crs_$filename.log" echo "************************************************************************************************************"; echo "" echo "" 1419,1 Bot echo "Content of LSNRTAB on this host : "; echo ""; if [[ -f /etc/lsnrtab ]]; then echo "`cat /etc/lsnrtab | grep -v "^#" | sort -u `" fi if [[ "$RH_VER" == 7.* ]]; then start_rh7_dbserv fi echo ""; echo "1" > $OUTPUT_DIRECTORY/bl_start_crs_flag.log echo "" echo "SUCCESS : Ready to move to next step" | tee -a ${LOG} echo "" assign_log insert_repdb ;; *) echo "Invalid Selection" esac chmod 777 $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/post_start*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/started*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/start_crs*.log 1> /dev/null 2>&1 chmod 777 $OUTPUT_DIRECTORY/bl_start*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/pre_stop*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/post_start*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/started*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/start_crs*.log 1> /dev/null 2>&1 #chown oracle:dba $OUTPUT_DIRECTORY/bl_start*.log 1> /dev/null 2>&1 if ls $OUTPUT_DIRECTORY/Portdaemon* 1> /dev/null 2>&1; then chmod 777 $OUTPUT_DIRECTORY/Portdaemon* #chown oracle:dba $OUTPUT_DIRECTORY/Portdaemon* fi filename=$(echo $(hostname) | cut -d. -f1)_$(date '+%m%d%Y_%H%M%S') mv ${LOG} $OUTPUT_DIRECTORY/start_crs_$filename.log echo "************************************************************************************************************"; echo "Please check the detailed CRS START report at $OUTPUT_DIRECTORY/start_crs_$filename.log" echo "************************************************************************************************************"; echo "" echo ""