ablog

不器用で落着きのない技術者のメモ

Oracle のインスタンス・リスナー・EMDBControl の自動起動・停止設定

Oracleインスタンス・リスナー・EMDBControl の自動起動・停止設定手順をメモ。
以下は Oracle 10gR2 on Solaris 10 の場合の手順。

  • oratab を編集する。
$ vi /var/opt/oracle/oratab 
orcl:/export/home/oracle/product/10.2.0/db_1:Y
  • /etc/init.d/dbora を作成する。
    • なんで Oracle のマニュアルにのっているスクリプトは rsh なんか使ってるんだろ?
    • 「su - ... -c ...」に変えちゃった。
    • 結局、かなり変えちゃった。
#!/bin/sh
ORATAB=/var/opt/oracle/oratab
ORACLE_HOME=`awk -F: '/^[^#:]+:.+:[Y]$/ { print $2; exit}' $ORATAB`
if [ x$ORACLE_HOME = "x" ]; then
    echo "There is not Y entry in $ORATAB."
    exit 1
fi
ORACLE=`ls -l $ORACLE_HOME/bin/dbstart | awk '{print $3}'`
PATH=${PATH}:$ORACLE_HOME/bin
export ORACLE_HOME PATH

case $1 in
'start')
        su - $ORACLE -c "$ORACLE_HOME/bin/dbstart"
        su - $ORACLE -c "$ORACLE_HOME/bin/lsnrctl start"
        su - $ORACLE -c "$ORACLE_HOME/bin/emctl start dbconsole" &
        ;;
'stop')
        su - $ORACLE -c "$ORACLE_HOME/bin/emctl stop dbconsole" 
        su - $ORACLE -c "$ORACLE_HOME/bin/lsnrctl stop"
        su - $ORACLE -c "$ORACLE_HOME/bin/dbshut"
        ;;
*)
        echo "usage: $0 {start|stop}"
        exit
        ;;
esac
exit
# cd /etc/init.d
# chown root:dba dbora
# chmod 750 dbora
# ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora

[参考]
Oracle�\�t�g�E�F�A�̒��~�ƋN��


追記(2010/01/18):
Linux の場合、/etc/init.d/dbora の ORATAB を /var/opt/oracle/oratab を /etc/oratab に変更して、シンボリックリンクを以下のように作成する。

# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora