shimashimaの日記: [Oracle][Linux]Oracle11gR2用起動スクリプト
自宅のCentOS5.4に入れたOracle11gR2を起動させるために、なんとなくシェルスクリプトを書いてみた。Oracle10gR2用のものはWeb上で見つけたのでそのまま利用したが11gR2では若干変更が必要なようだ。
ORA_HOMEはOracleインストール先のホームディレクトリ、ORACLE_UNQNAMEはインストール時に設定したインスタンス名、ORA_OWNERはoracleインストールユーザ名となる。
その上で、以下の様なシェルスクリプトを /etc/init.d/ 配下に配置する。
#!/bin/sh
# 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=/opt/oracle/product/11.2.0/dbhome_1
ORA_OWNER=oracle
export ORACLE_HOME=$ORA_HOME
export ORACLE_HOME_LISTNER=$ORA_HOME
export ORACLE_UNQNAME=ora10
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
start)
# Start Oracle Net
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
# Start the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
# Start emctl
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/dbora
;;
stop)
# Stop emctl
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
# Stop Oracle Net
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
# Stop the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
rm -f /var/lock/subsys/dbora
;;
restart)
$0 stop
$0 start
;;
status)
if [ -f /var/lock/subsys/dbora ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "usage: dbora {start|stop|restart|status}"
exit 1
esac
exit 0
また、Oracle用ユーザ(以下の例では[oracle])の.bashrcなどに、以下のように追記し環境変数を設定する。
export ORA_HOME=/opt/oracle/product/11.2.0/dbhome_1
export ORA_OWNER=oracle
export ORACLE_HOME=$ORA_HOME
export ORACLE_HOME_LISTNER=$ORA_HOME
export ORACLE_UNQNAME=ora10g
内容がスクリプトと重複しているが、多分スクリプト側のexportは実際には意味をなさないはずなので削除しても問題ないだろう。自分はまだ試していないが。
ちなみに、10gR2と11gR2での差異は
- ORACLE_HOME_LISTNER
- ORACLE_UNQNAME
二つの環境変数を追加したこと。
[Oracle][Linux]Oracle11gR2用起動スクリプト More ログイン