2012年6月4日月曜日

oracle 自動起動&停止


  • /etc/oratab で自動停止したいインスタンスをYにする
    インスタンス名:/opt/oracle/product/11.2.0/dbhome_1:Y




11.0.2.4 にしたら、リスナーの起動停止が思うようにできなかった。rootで起動したら、rootで停止しないといけないようです。
よって、以下のスクリプトは、

#   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"<
 $ORACLE_HOME/bin/lsnrctl start<

のようにスイッチせず、リスナーの起動停止をしましょう。

---- 以下スクリプト

#!/bin/bash

# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management S
ystem.
#
# processname: oracle

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle
ORACLE_USER=oracle
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORACLE_HOME_LISTNER=$ORACLE_HOME
ORACLE_UNQNAME=グローバルDB名

case "$1" in
'start')
   if [ -f $LOCKFILE ]; then
      echo $0 already running.
      exit 1
   fi
   echo -n $"Starting Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
   touch $LOCKFILE
   ;;
'stop')
   if [ ! -f $LOCKFILE ]; then
      echo $0 already stopping.
      exit 1
   fi
   echo -n $"Stopping Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
   rm -f $LOCKFILE
   ;;
'restart')
   $0 stop
   $0 start
   ;;
'status')
   if [ -f $LOCKFILE ]; then
      echo $0 started.
      else
      echo $0 stopped.
   fi
   ;;
*)
   echo "Usage: $0 [start|stop|status]"
   exit 1
esac

exit 0



  • rcスクリプトを登録する
    /sbin/chkconfig --add /etc/init.d/oracle
    /sbin/chkconfig --level 5 oracle on
      


0 件のコメント:

コメントを投稿