#!/bin/sh ############################################################################# # # Licensed Materials - Property of IBM # # (C) COPYRIGHT International Business Machines Corp. 2007, 2010 # # All Rights Reserved. # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # ############################################################################# ### BEGIN INIT INFO # Provides: DB2 # Required-Start: $network $syslog $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Start DB2 database manager ### END INIT INFO MOUNT=/bin/mount UMOUNT=/bin/umount MKDIR=/bin/mkdir RMMOD=/sbin/rmmod DB2FMP=db2fmcd DB2FMD="" TPUT=/usr/bin/tput $TPUT hpa 60 >/dev/null 2>&1 $TPUT setaf 1 >/dev/null 2>&1 RED=`$TPUT setaf 1` YELLOW=`$TPUT setaf 3` GREEN=`$TPUT setaf 2` BLUE=`$TPUT setaf 4` GREY=`$TPUT setaf 7` NORMAL=`$TPUT op` # Check arguments if [ "$1" != "start" -a "$1" != "stop" -a "$1" != "status" -a "$1" != "restart" ]; then /bin/echo -e "${YELLOW}Usage: $0 {start|stop|status|restart}${NORMAL}" exit 1 fi # Get DB2 environment, if the file does not exists, return failed status. if test -f /opt/ibm/db2/V9.7/db2; then . /opt/ibm/db2/V9.7/db2 else echo "${RED}File /opt/ibm/db2/V9.7/db2 does not exist!${NORMAL}" exit 1 fi # # Get and check environment # check_db2_environment() { if [ ! -z "$DB2HOME" -a ! -d "$DB2HOME" ]; then echo "${RED}DB2HOME directory $DB2HOME does not exist!${NORMAL}" exit 1 fi } status() { /bin/echo -ne " * DAS:\t\t\t\t\t" test=`netcat -z localhost 523 > /dev/null 2>&1` if [ $? -eq 0 ] ; then echo "${GREEN}running${NORMAL}" else echo "${GREY}unused${NORMAL}" fi for i in `$DB2HOME/instance/db2ilist`; do PORT=`su - $i -c "db2 get dbm config | grep SVCENAME | cut -d= -f2 | tr -d '\\n'"` /bin/echo -ne " * Instance $i ($PORT):\t" ps -eaf|grep -i db2sysc | grep $i > /dev/null 2>&1 if [ $? -eq 0 ] ; then echo "${GREEN}running${NORMAL}" else echo "${GREY}unused${NORMAL}" fi done return 0 } start() { check_db2_environment # Starting das for i in `$DB2HOME/instance/daslist` ; do /bin/echo -ne " * Starting DAS:\t\t\t" ERR_MESS=`su - $i -c "db2admin start 2>&1"` if [ $? -eq 0 ]; then echo "${GREEN}done.${NORMAL}" else echo "${RED}failed.${NORMAL}" echo " " echo "${YELLOW}Message: $ERR_MESS${NORMAL}" echo " " fi done # Starting instances for i in `$DB2HOME/instance/db2ilist` ; do PORT=`su - $i -c "db2 get dbm config | grep SVCENAME | cut -d= -f2 | tr -d '\\n'"` /bin/echo -ne " * Instance $i ($PORT):\t" ps -eaf|grep -i db2sysc | grep $i > /dev/null 2>&1 if [ $? -eq 0 ] ; then echo "${YELLOW}already running${NORMAL}" else ERR_MESS=`su - $i -c "db2 db2start 2>&1"` if [ $? -eq 0 ]; then echo "${GREEN}done.${NORMAL}" else echo "${RED}failed.${NORMAL}" echo " " echo "${YELLOW}Message: $ERR_MESS${NORMAL}" echo " " fi fi su - $i -c "db2 list db directory | grep 'Database name' > $i.db " su - $i -c "rm -f tssearch" for j in `grep Database /home/$i/$i.db | awk '{print $4}'` ; do /bin/echo -ne " * Activating database $j\t\t" ERR_MESS=`su - $i -c "db2 activate db $j 2>&1"` if [ $? -eq 0 ]; then echo "${GREEN}done.${NORMAL}" su - $i -c "db2 connect to $j > /dev/null;db2 select defaultname from sysibmts.tsdefaults where defaultname is null >> tssearch;db2 terminate > /dev/null" else echo "${RED}failed.${NORMAL}" echo " " echo "${YELLOW}Message: $ERR_MESS${NORMAL}" echo " " fi done su - $i -c "grep -q -F 'record(s) selected.' tssearch && echo -n ' * Starting db2text extender: ' && db2ts start for text" done return 0 } stop() { #stopping DAS for i in `$DB2HOME/instance/daslist` ; do /bin/echo -ne " * Stopping DAS:\t\t\t\t\t\t" test=`netcat -z localhost 523 > /dev/null 2>&1` if [ $? -eq 0 ] ; then ERR_MESS=`su - $i -c "db2admin stop 2>&1"` if [ $? -eq 0 ]; then echo "${GREEN}done.${NORMAL}" else echo "${RED}failed.${NORMAL}" echo " " echo "${YELLOW}Message: $ERR_MESS${NORMAL}" echo " " fi else echo "${YELLOW}already stopped${NORMAL}" fi done # stopping instances for i in `$DB2HOME/instance/db2ilist`; do PORT=`su - $i -c "db2 get dbm config | grep SVCENAME | cut -d= -f2 | tr -d '\\n'"` /bin/echo -ne " * Stopping DB2Text extender\t" su - $i -c "db2ts stop for text" /bin/echo -ne " * Stopping instance $i ($PORT):\t" ps -eaf|grep -i db2sysc | grep $i > /dev/null 2>&1 if [ $? -eq 0 ] ; then su - $i -c "db2 force applications all >> /dev/null 2>&1" ERR_MESS=`su - $i -c "db2stop force 2>&1"` if [ $? -eq 0 ]; then echo "${GREEN}done.${NORMAL}" else echo "${RED}failed.${NORMAL}" echo " " echo "${YELLOW}Message: $ERR_MESS${NORMAL}" echo " " fi else echo "${YELLOW}already stopped.${NORMAL}" fi done return 0 } # Here we finally get to do the real work. case "$1" in start) check_db2_environment if [ ! -x $DB2HOME/bin/db2 ]; then echo "Can't find needed file: dbstart - Setting START_DB2 = no" else if [ "$START_DB2" = "yes" ] ; then start fi fi ;; stop) check_db2_environment if [ ! -x $DB2HOME/bin/db2 ]; then echo "Can't find needed file: dbstart - Setting START_DB2 = no" else if [ "$START_DB2" = "yes" ] ; then stop fi fi ;; status) check_db2_environment status ;; force-reload) ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac #DEBHELPER# exit 0