自動起動停止について

  1. 概要
    1. solaris
    2. HP-UX
    3. Miracle
  2. chkconfig
  3. dbora


概要

基本的なブートの機構に関しては、 「unix 講座」の入門のブートを参照ください。

oracle データベースを自動起動停止するスクリプトは、dbora として作ります。

また複数のデータベースを制御するための制御テーブルとして oratab を使います。 oratab の場所は、OS により以下のように異なります。

OS 名 oratab のディレクトリ名
solaris/Linux /var/opt/oracle/oratab
AIX/HP-UX/Tru64/Miracle /etc/oratab

dbora では、データベースとデフォルトのリスナを起動停止します。 それ以外に必要なものがあれば、 dbora に追加してください。 その場合は、正しく動作することを確認する必要があります。 dbora はオラクル社からは提供されませんが、 サンプルがあります。

# dbora start       起動
# dbora stop        停止

以下に OS により異なる事項を書きます。

solaris

自動起動停止のためのスクリプト格納ディレクトリ

ディレクトリ 説     明
/etc/init.d dbora を格納します
/etc/rc0.d /etc/init.d/dbora を K10dbora にシンボリックリンクします:自動停止
/etc/rc2.d /etc/init.d/dbora を S99dbora にシンボリックリンクします:自動起動

自動起動停止のための設定手順

設定の手順は、以下のとおりです。

  1. /var/opt/oracle/oratab があることを確認する
  2. 上記 oratab に自動起動停止したい $ORACLE_SID:$ORACLE_HOME:Y を設定する
  3. dbora が /etc/init.d にあることを確認する
  4. 上記 dbora を /etc/rc0.d/K10dbora にシンボリックリンクする
  5. 上記 dbora を /etc/rc2.d/S99dbora にシンボリックリンクする
  6. リブートする

関連項目 (solaris)

HP-UX

自動起動停止のためのスクリプト格納ディレクトリ

ディレクトリ 説     明
/sbin/init.d dbora を格納します
/sbin/rc0.d /sbin/init.d/dbora を K10dbora にシンボリックリンクします:自動停止
/sbin/rc2.d /sbin/init.d/dbora を S99dbora にシンボリックリンクします:自動起動

自動起動停止のための設定手順

設定の手順は、以下のとおりです。

  1. /etc/oratab があることを確認する
  2. 上記 oratab に自動起動停止したい $ORACLE_SID:$ORACLE_HOME:Y を設定する
  3. dbora が /sbin/init.d にあることを確認する
  4. 上記 dbora を /sbin/rc0.d/K10dbora にシンボリックリンクする
  5. 上記 dbora を /sbin/rc2.d/S99dbora にシンボリックリンクする
  6. リブートする

関連項目 (HP-UX)

Miracle

自動起動停止のためのスクリプト格納ディレクトリ

ディレクトリ 説     明
/etc/rc.d/init.d dbora を格納します
/etc/rc.d/rc0.d chkconfig で /etc/init.d/dbora を K10dbora にシンボリックリンクします:自動停止
/etc/rc.d/rc5.d chkconfig で /etc/init.d/dbora を S99dbora にシンボリックリンクします:自動起動

Miracle LINUX のランレベル

LINUX のランレベルは次のようになります。

ランレベル 説     明
0 停止
1 シングルユーザーモード
2 未使用(ユーザー定義可能)
3 完全マルチユーザーモード
4 未使用(ユーザー定義可能)
5 完全マルチユーザーモード(Xベースのログイン画面)
6 再ブート

自動起動停止のための設定手順

設定の手順は、以下のとおりです。

  1. /etc/oratab があることを確認する
  2. 上記 oratab に自動起動停止したい $ORACLE_SID:$ORACLE_HOME:Y を設定する
  3. dbora が /etc/rc.d/init.d にあることを確認する
  4. 上記 dbora の先頭に chkconfig のための設定を入れる
  5. chkconfig で自動起動停止スクリプトを登録する
  6. リブートする

chkconfig

ランレベルへの登録、削除は、chkconfig ユーティリティで行います。

dbora を /etc/rc.d/init.d に置き、先頭に chkconfig への設定を入れます。 それは、ランレベル、起動時のプライオリティ、停止時のプライオリティで、 コメントとして入れます。

# chkconfig: 5 99 10
説明
         5   : runlevel   5
        99   : start priority
        10   : stop priority

> chkconfig --add dbora
> chkconfig --list dbora
dbora           0:off   1:off   2:off   3:off   4:off   5:on    6:off

dbora

以下が oracle 8.1.7 の dbora です。

#!/bin/sh
#
# chkconfig: 5 99 10
# description: Oracle Database Server
# processname: ora_
#
# dbora         This shell script takes care of starting and stopping
#               Oracle Database Server.

SUBSYS=/var/lock/subsys/dbora
ORATAB=/etc/oratab

dbora_init() {
    # get ORACLE_HOME from the first entry,
    # whose 3rd field is Y, in $ORATAB.
    if [ ! -f $ORATAB ]
    then
        echo "auto startup/shudown of Oracle: $ORATAB does not exist."
        exit 1
    fi
    ORA_HOME=`awk -F: '/^[^#:]+:.+:[Y]$/ { print $2; exit}' $ORATAB`

    if [ x$ORA_HOME = "x" ]; then
        echo "There is not Y entry in $ORATAB ."
        exit 1
    fi

    # get oracle's owner from owner of dbstart.
    if [ ! -f $ORA_HOME/bin/dbstart ]
    then
        echo "auto startup/shudown of Oracle: Oracle may not be installed" \
             "correctly."
        exit 1
    fi
    ORA_OWNER=`ls -l $ORA_HOME/bin/dbstart | awk '{print $3}'`
}

case "$1" in
'start')
    if [ -f $SUBSYS ]; then
        echo $0 alredy started.
        exit 1
    fi
    dbora_init
    # Start the Oracle databases:
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
    # Start Intelligent Agent and Oracle Management Server
    # --- for Oracle9i ---
    # su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl start"
    # su - $ORA_OWNER -c "$ORA_HOME/bin/oemctl start oms"
    # --- for Oracle8i ---
    # su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_start"
    # su - $ORA_OWNER -c "$ORA_HOME/bin/oemctrl start oms"
    # --------------------
    # Start the Oracle HTTP Server
    # This is a BUG workaround. $ORACLE_HOME/Apache/Jserv/etc
    # /jserv.properties needs DISPLAY.
    # test -z "$DISPLAY" && export DISPLAY=":60000.0"
    # su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
    # --------------------
    touch $SUBSYS
    ;;

'stop')
    if [ ! -f $SUBSYS ]; then
        echo $0 alredy stopped.
        exit 1
    fi
    dbora_init
    # Stop Intelligent Agent
    # --- for Oracle9i ---
    # su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl stop"
    # --- for Oracle8i ---
    # su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_stop"
    # --------------------
    # Stop the Oracle HTTP Server
    # su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
    # --------------------
    # Stop the Oracle databases:
    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
    su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
    rm -f $SUBSYS
    ;;

'restart')
    $0 stop
    $0 start
    ;;

'status')
    if [ -f $SUBSYS ]; then
        echo $0 started.
    else
        echo $0 stopped.
    fi
    ;;
*)
    echo "Usage: $0 {start|stop|status}"
    exit 1
esac

exit 0

関連項目 (Miracle)

chkconfig(8)