ablog

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

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

11g でもほぼ、Oracle のインスタンス・リスナー・EMDBControl の自動起動・停止設定 - ablog と同じでよいが、
以下の2点を変更しないと動かなかった。

  • /etc/init.d/dbora
    • dbstart、dbshut の引数に $ORACLE_HOME を追加しただけ。
#!/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 $ORACLE_HOME"
        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 $ORACLE_HOME"
        ;;
*)
        echo "usage: $0 {start|stop}"
        exit
        ;;
esac
exit
  • $ORACLE_HOME/dbstart、dbshut
    • Bourne Shell では動かないコードが書かれていたので、bash にしたら動いたw
$ cd $ORACLE_HOME/bin
$ perl -i.org -ple 's/^#!\/bin\/sh$/#!\/bin\/bash/' dbstart
$ perl -i.org -ple 's/^#!\/bin\/sh$/#!\/bin\/bash/' dbshut
$ diff dbstart dbstart.org
1c1
< #!/bin/bash
---
> #!/bin/sh
$ diff dbshut dbshut.org
1c1
< #!/bin/bash
---
> #!/bin/sh


[参考]
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05786-04/strt_stp.htm#BABGDGHF