Init.d Script für DB2 unter RHEL

Aus aktuellem Anlass habe ich ein Init.d Stript für eine DB2 Instanz unter RHEL (Redhat Enterprise Linux) geschrieben. Das Script startet nicht die Instanz direkt sondern den db2fm Dienst der die Instanz überwacht und gegebenenfalls neustartet.

Deaktivieren des DB2 eigenem  Autostart (es gibt nur einen Autostart kein sauberes Beenden der Instanz):

/opt/ibm/db2/V9.7/bin/db2fmcu -d

Desweiteren muss der Autostart der Datenbank aktivert sein. Dies ist jedoch bei einer Standard Installation der Fall.

Hier die erste Version des Scripts. Ich werde eventuell noch einen Status bzw. ein Check der Datenbank einbauen:

#!/bin/bash
#
# description: DB2 Start/Stop Script
# chkconfig: 2345 80 05
# processname: db2
 
# Source function library.
. /etc/init.d/functions
 
### please change ###
DB2HOME=/home/db2inst1/sqllib
DB2ROOT=/opt/ibm/db2/V9.7
DB2USER=db2inst1
### please change ###
 
RETVAL=0
 
start() {
echo "Starting DB2..."
su $DB2USER -c "$DB2HOME/adm/db2start >/dev/null 2>&1"
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "DB2 - OK"
else
echo "DB2 - ERROR!"
echo "... DB2 not started!"
exit 1
fi
su $DB2USER -c "$DB2HOME/bin/db2fm -U -u -i $DB2USER -m $DB2ROOT/das/lib/libdb2dasgcf.so.1 >/dev/null 2>&1"
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "DB2FM - OK"
echo "... DB2 started success!"
touch /var/lock/subsys/db2
else
echo "DB2FM - ERROR!"
echo "... DB2 not started!"
exit 1
fi
echo
}
 
stop() {
echo "Shutting down DB2..."
su $DB2USER -c "$DB2HOME/db2profile && $DB2HOME/bin/db2 FORCE APPLICATION ALL >/dev/null 2>&1"
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "DB2 force application - OK"
else
echo "DB2 force application - ERROR"
echo "... DB2 not started!"
exit 1
fi
sleep 10
su $DB2USER -c "$DB2HOME/adm/db2stop >/dev/null 2>&1"
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "DB2 - OK"
else
echo "DB2 - ERROR"
echo "... DB2 not started!"
exit 1
fi
su $DB2USER -c "$DB2HOME/bin/db2fm -d -i $DB2USER -m $DB2ROOT/das/lib/libdb2dasgcf.so.1 >/dev/null 2>&1"
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "DB2FM - OK"
echo "... DB2 stopped success!"
rm -f /var/lock/subsys/db2
else
echo "DB2FM - ERROR!"
echo "... DB2 not stopped!"
exit 1
fi
echo
}
 
restart() {
stop
echo "... Waiting ..."
echo ""
sleep 5
start
}
 
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
 
echo "Usage: DB2 {start|stop|restart}"
exit 1
;;
esac
exit $?

Leave a Reply

Your email address will not be published. Required fields are marked *