Wednesday, December 29, 2010

11g Database Auto startup/shutdown script during reboots.

I have a standalone 11 R2 (11.2.0.2) non-ASM database. The following is my script which can auto start/stop database and listener during system reboots. Please note that script read /etc/oratab file to check which database to start. During startup, any database entry which has the "Y" at the end in the /etc/oratab file, will be started.

Create a new file called /etc/init.d/oracle

#!/bin/bash

###########################################################################
# #
# Run-level Startup script for the Oracle Instance and Listener #
# #
# chkconfig: 345 98 34 #
# description: Startup/Shutdown script for 11g Oracle instances #
# #
###########################################################################

###########################################################################
# #
# Note: #
# cp $ORACLE_HOME/bin/dbstart $ORACLE_HOME/bin/dbstart.orig #
# Make the following changes in $ORACLE_HOME/bin/dbstart #
# #
# Line#80 has the following: #
# ORACLE_HOME_LISTNER=$1 #
# #
# Replace it with the following two lines: #
# export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 #
# ORACLE_HOME_LISTNER=$ORACLE_HOME #
# #
# cp $ORACLE_HOME/bin/dbshut $ORACLE_HOME/bin/dbshut.orig #
# Make the following changes in $ORACLE_HOME/bin/dbshut #
# #
# Line#50 has the following: #
# ORACLE_HOME_LISTNER=$1 #
# #
# Replace it with the following two lines: #
# export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 #
# ORACLE_HOME_LISTNER=$ORACLE_HOME #
# #
# save the file and proceed with the steps below #
# #
###########################################################################

###########################################################################
#Instructions to start start isntances manually #
# #
# To Start --> /etc/init.d/oracle start #
# To Stop --> /etc/init.d/oracle stop #
# To restrart --> /etc/init.d/oracle restart #
# #
###########################################################################

ORA_HM="/u01/app/oracle/product/11.2.0/db_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HM/bin/dbstart -o ! -d $ORA_HM ]
then
echo "Oracle startup: cannot start"
exit 1
fi

# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display

case "$1" in
start)
# starting Oracle instances
echo -n "starting Oracle Instances"
su - $ORA_OWNR -c $ORA_HM/bin/dbstart
touch /var/lock/subsys/oracle
ps -ef |grep pmon |grep -v grep
ps -ef |grep lsnr |grep -v grep
echo "OK"
;;
stop)

# Oracle listener and instance shutdown
su - $ORA_OWNR -c $ORA_HM/bin/dbshut
rm -f /var/lock/subsys/oracle
ps -ef |grep pmon |grep -v grep
ps -ef |grep lsnr |grep -v grep
echo "OK"
;;

reload|restart)
$0 stop
$0 start
ps -ef |grep pmon |grep -v grep
ps -ef |grep lsnr |grep -v grep
echo "OK"
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
clear
######################END of Instructions##################################


Once the above script is created, perform the following as root.

chmod 750 /etc/init.d/oracle
chkconfig --level 345 oracle on

How to turn off/on the script.
[root@bl-mm-db-dev ~]# /sbin/chkconfig oracle off
[root@bl-mm-db-dev ~]# /sbin/chkconfig --levels 345 oracle on