您的位置:首页 > 数据库 > Oracle

Start/stop Oracle&nbs…

2013-01-28 22:11 369 查看
原文地址:Start/stop Oracle database as a Linux Service作者:Hello顾问[root@emsrv init.d]# cat dbora

#!/bin/sh

#

# chkconfig: 345 99 10

# description: Oracle auto start-stop script.

#

# Set ORA_HOME to be equivalent to the $ORACLE_HOME

# from which you wish to execute dbstart and dbshut;

#

# Set ORA_OWNER to the user id of the owner of the

# Oracle database in ORA_HOME.

ORA_HOME=/u01/app/oracle/product/12.1.0/dbhome_1

ORA_OWNER=oracle

if [ ! -f $ORA_HOME/bin/dbstart ]

then

    echo "Oracle
startup: cannot start"

    exit

fi

case "$1" in

   
'start')

       
# Start the Oracle databases:

       
# The following command assumes that the oracle login

       
# will not prompt the user for any values

       
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"

       
su - $ORA_OWNER -c ~${ORA_OWNER}/bin/orastart

       
;;

   
'stop')

       
# Stop the Oracle databases:

       
# The following command assumes that the oracle login

       
# will not prompt the user for any values

       
su - $ORA_OWNER -c ~${ORA_OWNER}/bin/orashut

       
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"

       
;;

esac

[root@emsrv init.d]# cat
/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart

#!/bin/sh

#

# $Id: dbstart.sh 22-may-2008.05:05:45 arogers Exp $

# Copyright (c) 1991, 2008, Oracle. All rights reserved.
 

#

###################################

#

# usage: dbstart $ORACLE_HOME

#

# This script is used to start ORACLE from /etc/rc(.local).

# It should ONLY be executed as part of the system boot
procedure.

#

# This script will start all databases listed in the oratab
file

# whose third field is a "Y".  If the third field
is set to "Y" and

# there is no ORACLE_SID for an entry (the first field is a
*),

# then this script will ignore that entry.

#

# This script requires that ASM ORACLE_SID's start with a +,
and

# that non-ASM instance ORACLE_SID's do not start with a +.

#

# If ASM instances are to be started with this script, it
cannot

# be used inside an rc*.d directory, and should be invoked
from

# rc.local only. Otherwise, the CSS service may not be
available

# yet, and this script will block init from completing the
boot

# cycle.

#

# If you want dbstart to auto-start a single-instance database that
uses

# an ASM server that is auto-started by CRS (this is the default
behavior

# for an ASM cluster), you must change the database's ORATAB entry
to use

# a third field of "W" and the ASM's ORATAB entry to use a third
field of "N".

# These values specify that dbstart auto-starts the database only
after

# the ASM instance is up and running.

#

# Note:

# Use ORACLE_TRACE=T for tracing this script.

#

# The progress log for each instance bringup plus Error and Warning
message[s]

# are logged in file $ORACLE_HOME/startup.log. The error messages
related to

# instance bringup are also logged to syslog (system log
module).

# The Listener log is located at
$ORACLE_HOME_LISTNER/listener.log

#

# On all UNIX platforms except SOLARIS

# ORATAB=/etc/oratab

#

# To configure, update ORATAB with Instances that need to be
started up

#    Entries are
of the form:

#   
$ORACLE_SID:$ORACLE_HOME::

#    An example
entry:

#   
main:/usr/lib/oracle/emagent_10g:Y

#

# Overall algorithm:

# 1) Bring up all ASM instances with 'Y' entry in status field in
oratab entry

# 2) Bring up all Database instances with 'Y' entry in status field
in

#    oratab
entry

# 3) If there are Database instances with 'W' entry in status
field

#    then

#     
iterate over all ASM instances (irrespective of 'Y' or 'N')
AND

#     
wait for all of them to be started

#    fi

# 4) Bring up all Database instances with 'W' entry in status field
in

#    oratab
entry

#

#####################################

LOGMSG="logger -puser.alert -s "

trap 'exit' 1 2 3

# for script tracing

case $ORACLE_TRACE in

  T) set -x ;;

esac

    

# Set path if path not set (if called from /etc/rc)

SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH

SAVE_LLP=$LD_LIBRARY_PATH

# First argument is used to bring up Oracle Net Listener

ORACLE_HOME_LISTNER=$1

if [ ! $ORACLE_HOME_LISTNER ] ; then

  echo "ORACLE_HOME_LISTNER is not SET, unable to
auto-start Oracle Net Listener"

  echo "Usage: $0 ORACLE_HOME"

else

  LOG=$ORACLE_HOME_LISTNER/listener.log

  # Set the ORACLE_HOME for the Oracle Net
Listener, it gets reset to

  # a different ORACLE_HOME for each entry in the
oratab.

  export ORACLE_HOME=$ORACLE_HOME_LISTNER

  # Start Oracle Net Listener

  if [ -x $ORACLE_HOME_LISTNER/bin/tnslsnr ] ;
then

    echo "$0:
Starting Oracle Net Listener" >> $LOG 2>&1

   
$ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG 2>&1
&

   
VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL
for " | cut -d' ' -f5 | cut -d'.' -f1`

    export
VER10LIST

  else

    echo "Failed
to auto-start Oracle Net Listener using
$ORACLE_HOME_LISTNER/bin/tnslsnr"

  fi

fi

# Set this in accordance with the platform

ORATAB=/etc/oratab

if [ ! $ORATAB ] ; then

  echo "$ORATAB not found"

  exit 1;

fi

# Checks Version Mismatch between Listener and Database
Instance.

# A version 10 listener is required for an Oracle Database 10g
database.

# Previous versions of the listener are not supported for use with
an Oracle

# Database 10g database. However, it is possible to use a version
10 listener

# with previous versions of the Oracle database.

checkversionmismatch() {

  if [ $VER10LIST ] ; then

   
VER10INST=`sqlplus -V | grep "Release " | cut -d' ' -f3 | cut -d'.'
-f1`

    if [
$VER10LIST -lt $VER10INST ] ; then

     
$LOGMSG "Listener version $VER10LIST NOT supported with Database
version $VER10INST"

     
$LOGMSG "Restart Oracle Net Listener using an alternate
ORACLE_HOME_LISTNER:"

     
$LOGMSG "lsnrctl start"

    fi

  fi

}

# Starts a Database Instance

startinst() {

  # Called programs use same database ID

  export ORACLE_SID

  # Put $ORACLE_HOME/bin into PATH and
export.

  PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export
PATH

  # add for bug # 652997

  LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ;
export LD_LIBRARY_PATH

 
PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora

 
SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora

  SPFILE1=${ORACLE_HOME}/dbs/spfile.ora

  echo ""

  echo "$0: Starting up database
"$ORACLE_SID""

  date

  echo ""

  checkversionmismatch

  # See if it is a V6 or V7 database

  VERSION=undef

  if [ -f $ORACLE_HOME/bin/sqldba ] ; then

   
SQLDBA=sqldba

   
VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk '

     
/SQL*DBA: (Release|Version)/ {split($3, V, ".") ;

     
print V[1]}'`

    case
$VERSION in

     
"6") ;;

     
*) VERSION="internal" ;;

    esac

  else

    if [ -f
$ORACLE_HOME/bin/svrmgrl ] ; then

     
SQLDBA=svrmgrl

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: