Q1.1: How to start/stop SQL Server when CPU reboots


Below is an example of the various files (on Irix) that are needed to start/stop a SQL Server. The information can easily be extended to any UNIX platform.

The idea is to allow as much flexibility to the two classes of administrators that admin the machine:

Any errors introduced by the DBA will not interfere with the System Administrator's job.

With that in mind we have the system startup/shutdown file /etc/init.d/sybase invoking a script defined by the DBA: /usr/sybase/sys.config/{start,stop}.sybase

/etc/init.d/sybase

On some operating systems this file must be linked to a corresponding entry in /etc/rc.0 and /etc/rc.2 -- see rc0(1M) and rc2(1M) #!/bin/sh # last modified: 10/17/95, sr. # # Make symbolic links so this file will be called during system stop/start. # ln -s /etc/init.d/sybase /etc/rc0.d/K19sybase # ln -s /etc/init.d/sybase /etc/rc2.d/S99sybase # chkconfig -f sybase on # Sybase System-wide configuration files CONFIG=/usr/sybase/sys.config if $IS_ON verbose ; then # For a verbose startup and shutdown ECHO=echo VERBOSE=-v else # For a quiet startup and shutdown ECHO=: VERBOSE= fi case "$1" in 'start') if $IS_ON sybase; then if [ -x $CONFIG/start.sybase ]; then $ECHO "starting Sybase servers" /bin/su - sybase -c "$CONFIG/start.sybase $VERBOSE &" else <error condition> fi fi ;; 'stop') if $IS_ON sybase; then if [ -x $CONFIG/stop.sybase ]; then $ECHO "stopping Sybase servers" /bin/su - sybase -c "$CONFIG/stop.sybase $VERBOSE &" else <error condition> fi fi ;; *) echo "usage: $0 {start|stop}" ;; esac

/usr/sybase/sys.config/{start,stop}.sybase

start.sybase

#!/bin/sh -a # # Script to start sybase # # NOTE: different versions of sybase exist under /usr/sybase/{version} # # Determine if we need to spew our output if [ "$1" != "spew" ] ; then OUTPUT=">/dev/null 2>&1" else OUTPUT="" fi # 10.0.2 servers HOME=/usr/sybase/10.0.2 cd $HOME # Start the backup server eval install/startserver -f install/RUN_BU_KEPLER_1002_52_01 $OUTPUT # Start the dataservers # Wait two seconds between starts to minimize trauma to CPU server eval install/startserver -f install/RUN_FAC_WWOPR $OUTPUT sleep 2 eval install/startserver -f install/RUN_MAG_LOAD $OUTPUT exit 0

stop.sybase

#!/bin/sh # # Script to stop sybase # # Determine if we need to spew our output if [ -z "$1" ] ; then OUTPUT=">/dev/null 2>&1" else OUTPUT="-v" fi eval killall -15 $OUTPUT dataserver backupserver sybmultbuf sleep 2 # if they didn't die, kill 'em now... eval killall -9 $OUTPUT dataserver backupserver sybmultbuf exit 0 If your platform doesn't support killall, it can easily be simulated as follows: #!/bin/sh # # Simple killall simulation... # $1 = signal # $2 = process_name # # # no error checking but assume first parameter is signal... # what ya want for free? :-) # kill -$1 `ps -ef | fgrep $2 | fgrep -v fgrep | awk '{ print $1 }'`