SAPシステムをLinux/Oracle環境で構築した場合、初期状態では一般的に
- orasidユーザーでlsnrctl startコマンドでオラクルリスナーを起動
- sidadmユーザーでstartsapコマンド/sapcontrolコマンドでOracle(直接SQL*PlusからstartupでもOK)→SAPと起動
と異なるユーザーで順番に手動操作で起動しないといけません。
Oracle 11g R2では非推奨とされていますがdbstart/dbshutコマンドを組み込めばOSブート時に
データベースそのものの自動起動も可能ですし、同様のスクリプトを書けばSAPインスタンスまで
自動起動させることも出来ますが、ここでは一例としてリスナーだけを自動起動する方法をご紹介します。
対象となるOSはRed Hat Enterprise Linux 6とします。
rootユーザーで/etc/rc.d/init.d/配下にスクリプトを作成します。ここではファイル名はsaporalsnrとします。
# vi /etc/rc.d/init.d/saporalsnr
#!/bin/sh
# chkconfig: 2345 99 10
# description: start and stop Oracle Listner
#
# Oracle Listner Auto Start
#
ORA_HOME=/oracle/SID/112_64
ORA_OWNER=orasid
export ORACLE_HOME=$ORA_HOME
SUBSYSTEM=/var/lock/subsys/saporalsnr
case "$1" in
start)
# Start Oracle Net
if [ -f $SUBSYSTEM ]; then
echo $0 already running.
exit 1
fi
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
touch $SUBSYSTEM
;;
stop)
# Stop Oracle Net
if [ ! -f $SUBSYSTEM ]; then
echo $0 already stopping.
exit 1
fi
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
rm -f $SUBSYSTEM
;;
restart)
$0 stop
$0 start
;;
status)
if [ -f $SUBSYSTEM ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
実行権を変更しておきます。
# chmod 755 /etc/rc.d/init.d/saporalsnr
chkconfigコマンド用の定義をしてあるので自動起動を設定します。
上記例ではランレベル2345で起動され016では停止する内容になっています。
# chkconfig --add saporalsnr
確認すると/etc/rc.d/rc2.d、rc3.d、rc4.d、rc5.d配下にS99saporalsnrファイルが、
/etc/rc.d/rc0.d、rc1.d、rc6.d配下にK10saporalsnrファイルが作成されています。
また以下のコマンドで確認することもできます。
# chkconfig --list saporalsnr
saporalsnr 0:off 1:off 2:on 3:on 4:on 5:on 6:off
WindowsであればGUIでサービスの管理ツールから簡単に自動起動の設定ができますが、
Linux/Unixでもこのようにスクリプトを作成することで自動起動の仕組みを実装することが可能です。