Thanks for the info.
Our Oracle dba's wrote the script probably using their scripts from Solaris
as a model.

-----Original Message-----
From: Linux on 390 Port [mailto:[EMAIL PROTECTED] Behalf Of
David Boyes
Sent: Friday, February 11, 2005 5:02 PM
To: [email protected]
Subject: Re: Init script for starting oracle 9i on sles8?


On Fri, Feb 11, 2005 at 03:01:33PM -0500, Smith, Ann (ISD, IT) wrote:
> [... example oldstyle BSD init script ...]

FYI, you REALLY  want to update this. This script will
*seriously* mess up insserv and the SuSE runlevel processing the next
time you do a RPM install using YaST or possibly render your system
unbootable if the startup order of the scripts gets munged badly enough.

Appended below are 4 files which are a insserv-safe version of
your script, modified to take advantage of the "standard" Yast
features and /etc/sysconfig support. I also split up the database
startup and the SQL*net startup by putting each into a separate script
and adding a dependency on the database startup for sqlnet to
initialize. All the configuration variables are pulled out into
/etc/sysconfig files, and you can edit them individually with the YaST
sysconfig editor.

Note that the /etc/sysconfig file related to each script is the same
name as the init script, allowing you to use the same scripts for
multiple database instances by renaming the script to a new name (eg,
oracledb1, oracledb2, etc), doing an insserv on the renamed script,
and the associated parameters are drawn automagically from the
/etc/sysconfig file of the same name. Leads to a little bit of
duplication, but it also means that you can't screw up the entire
environment by mangling one config file.


To use these, just 'insserv oracledb; insserv sqlnet; cp oracledb
/etc/sysconfig/oracledb; cp sqlnet /etc/sysconfig/sqlnet' and you can
issue 'oracledb start; sqlnet start' and watch the fun. They even get
the nice colored status indicators that the SuSE-supplied scripts
get...8-)

Warning: check where lines end -- mailing these may have munged them
somewhat.


/etc/init.d/oracledb:  (the actual init script itself)
---------------------------------------------------------------

#! /bin/sh
# Oracle database startup script
# Mutated from PostGres example in SuSE distribution
#
# Author (of the Postgres version):
#         Karl Eichwalder <[EMAIL PROTECTED]>, 1998
#         Reinhard Max <[email protected]>, 2000
# Tweaked: David Boyes <[EMAIL PROTECTED]>, 2005
#
# Caveat: Trivially tested. Don't blame me if it makes your
#         system sick. After all, what did you pay for it?
#
# /etc/init.d/oracledb
#
#   and symbolic its link
#
# /usr/sbin/oracledb
#
### BEGIN INIT INFO
# Provides:       oracle
# Required-Start: $network $remote_fs
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:
# Description:    Start Oracle Databases
### END INIT INFO

# Source SuSE config
ORA_SYSCONFIG=/etc/sysconfig/$0

if [ -f $ORA_SYSCONFIG ]; then
    . $ORA_SYSCONFIG
fi

#
# All the environment variable settings go in ORA_SYSCONFIG
#
#

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

#
# check for external Oracle startup script and bail if not present.
#
H=/tech/oracle/admin/sys/orasetup.sh
test -x $H || exit 5

SUBIN=/bin/su
        
# The echo return value for success (defined in /etc/rc.config).
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

case "$1" in
    start)
        echo -n "Starting Oracle Database Engine"
        ## create logfile
        ##
        touch $LOGDIR/$LOGFILE
        ##
        ## set up oracle profile environment
        . /tech/oracle/admin/environment/oracleprofile $MOUNT_PT \
               $ORACLE_SID >> $LOGDIR/$LOGFILE 2>&1
        ##
        ## and start 'er up, Clancy
        ##
        startproc $SUBIN $ORACLE_USER -c $ORACLE_HOME/bin/dbstart >> \
               $LOGDIR/$LOGFILE 2>&1
        rc_status -v
    ;;

    stop)
        echo -n "Stopping Oracle Database Engine"
        ## Stop daemon with killproc(8) and if this fails
        ## set the echo return value.

        killproc -INT $H
        rc_status -v
    ;;

    try-restart)
        ## Stop the service and if this succeeds (i.e. the
        ## service was running before), start it again.
        ## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
        $0 status &&  $0 restart
    ;;

    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start
        rc_status
    ;;

    force-reload | reload)
        echo -n "Reloading configuration for PostgreSQL"
        killproc -HUP $H
        rc_status -v
    ;;

    status)
        echo -n "Checking for PostgreSQL: "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.

        # Status has a slightly different for the status command:
        # 0 - service running
        # 1 - service dead, but /var/run/  pid  file exists
        # 2 - service dead, but /var/lock/ lock file exists
        # 3 - service not running

        # NOTE: checkproc returns LSB compliant status values.
        checkproc $H
        rc_status -v
    ;;

    probe)
        rc_failed 3
        rc_status -v
    ;;

    *)
        echo "Usage: $0
{start|stop|status|try-restart|restart|force-reload|reload|probe}"
        exit 1
    ;;
esac

# Inform the caller not only verbosely and set an exit status.
rc_exit


/etc/init.d/sqlnet:
---------------------------------------------------------------------

#! /bin/sh
# Oracle SQL*NET  startup script
# Mutated from PostGres example in SuSE distribution
#
# Author (of the Postgres version):
#         Karl Eichwalder <[EMAIL PROTECTED]>, 1998
#         Reinhard Max <[email protected]>, 2000
# Tweaked: David Boyes <[EMAIL PROTECTED]>, 2005
#
# Caveat: Trivially tested. Don't blame me if it makes your
#         system sick. After all, what did you pay for it?
#
# /etc/init.d/sqlnet
#
#   and symbolic its link
#
# /usr/sbin/sqlnet
#
### BEGIN INIT INFO
# Provides:       sqlnet
# Required-Start: $network $remote_fs $oracle
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:
# Description:    Start Oracle SQL*Net Listener
### END INIT INFO

# Source SuSE config
ORA_SYSCONFIG=/etc/sysconfig/$0

if [ -f $ORA_SYSCONFIG ]; then
    . $ORA_SYSCONFIG
fi

#
# All the environment variable settings go in ORA_SYSCONFIG
#
#

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

#
# check for external Oracle startup script and bail if not present.
#
H=/tech/oracle/admin/sys/orasetup.sh
test -x $H || exit 5

SUBIN=/bin/su
        
# The echo return value for success (defined in /etc/rc.config).
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

case "$1" in
    start)
        echo -n "Starting Oracle SQL*Net Listener"
        ## create logfile
        ##
        touch $LOGDIR/$LOGFILE
        ##
        ## set up oracle profile environment
        . /tech/oracle/admin/environment/oracleprofile $MOUNT_PT \
               $ORACLE_SID >> $LOGDIR/$LOGFILE 2>&1
        ##
        ## and start 'er up, Clancy
        ##
        startproc $SU_BIN $ORACLE_USER -c '$ORACLE_HOME/bin/lsnrctl start \
                listener' >> $LOGDIR/$LOGFILE 2>&1
        rc_status -v
    ;;

    stop)
        echo -n "Stopping Oracle SQL*Net Listener"
        ## Stop daemon with killproc(8) and if this fails
        ## set the echo return value.

        killproc -INT $H
        rc_status -v
    ;;

    try-restart)
        ## Stop the service and if this succeeds (i.e. the
        ## service was running before), start it again.
        ## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
        $0 status &&  $0 restart
    ;;

    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start
        rc_status
    ;;

    force-reload | reload)
        echo -n "Reloading configuration for Oracle SQL*Net"
        killproc -HUP $H
        rc_status -v
    ;;

    status)
        echo -n "Checking for Oracle SQL*Net: "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.

        # Status has a slightly different for the status command:
        # 0 - service running
        # 1 - service dead, but /var/run/  pid  file exists
        # 2 - service dead, but /var/lock/ lock file exists
        # 3 - service not running

        # NOTE: checkproc returns LSB compliant status values.
        checkproc $H
        rc_status -v
    ;;

    probe)
        rc_failed 3
        rc_status -v
    ;;

    *)
        echo "Usage: $0
{start|stop|status|try-restart|restart|force-reload|reload|probe}"
        exit 1
    ;;
esac

# Inform the caller not only verbosely and set an exit status.
rc_exit


/etc/sysconfig/oracledb:
--------------------------------------------------------------------------


LOGFILE=orasys_strt_`date +%m%d%y`;
LOGDIR=/tech/oracle/admin/doc;
ORACLE_SID=skazal9;
MOUNT_PT=/tech/oracle;
ORAENV_ASK=NO;
ORACLE_USER=oracle;


/etc/sysconfig/sqlnet:
--------------------------------------------------------------------------

LOGFILE=orasys_strt_`date +%m%d%y`;
LOGDIR=/tech/oracle/admin/doc;
ORACLE_SID=skazal9;
MOUNT_PT=/tech/oracle;
ORAENV_ASK=NO;
ORACLE_USER=oracle;

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or
visit
http://www.marist.edu/htbin/wlvindex?LINUX-390


This communication, including attachments, is for the exclusive use of
addressee and may contain proprietary, confidential or privileged
information. If you are not the intended recipient, any use, copying,
disclosure, dissemination or distribution is strictly prohibited. If
you are not the intended recipient, please notify the sender
immediately by return email and delete this communication and destroy all 
copies.

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

Reply via email to