Oracle10gの自動インスタンス起動(Solaris9対応版)
先週から自動起動に悪戦苦闘中。
形になってきたので、覚書としてまとめておく。
参考にしたページ
http://otndnld.oracle.co.jp/document/products/oracle10g/102/unix/B19278-05/strt_stp.htm#403224
OS の起動時に Oracle を起動する - オラクル・Oracleをマスターするための基本と仕組み
自動起動対象インスタンスの指定
rootユーザでログインし、/var/opt/oracle/oratab を編集する。
中身はこんな感じになっていて、$ORACLE_SID:$ORACLE_HOME:[N|Y]の構成。
orcl:/usr/local/oracle/product/10.2.0/Db_1:N
orcl2:/usr/local/oracle/product/10.2.0/Db_1:N→ 自動起動の対象を、「N」から「Y」に変更
このファイルを修正すると、$ORACLE_HOME/bin/dbstartで起動できるようになる。
(ただしdbstartはデフォルトではうまく動かないので修正が必要:後述)
自動起動スクリプトの作成
/etc/init.d/dboraを新規作成する。
ファイルの内容は以下の通り。
6行目のORACLE_HOMEを自環境のORACLEホーム、
11行目のORACLEをORACLEユーザにあわせておくのを忘れずに!
#! /bin/sh -x # # Change the value of ORACLE_HOME to specify the correct Oracle home # directory for your installation. ORACLE_HOME=/usr/local/oracle/product/10.2.0/Db_1 # # Change the value of ORACLE to the login name of the # oracle owner at your site. # ORACLE=oracle PATH=${PATH}:$ORACLE_HOME/bin HOST=`hostname` PLATFORM=`uname` export ORACLE_HOME PATH # if [ ! "$2" = "ORA_DB" ] ; then if [ "$PLATFORM" = "HP-UX" ] ; then remsh $HOST -l $ORACLE -n "$0 $1 ORA_DB" exit else rsh $HOST -l $ORACLE $0 $1 ORA_DB exit fi fi # case $1 in 'start') $ORACLE_HOME/bin/dbstart $ORACLE_HOME & ;; 'stop') $ORACLE_HOME/bin/dbshut $ORACLE_HOME & ;; *) echo "usage: $0 {start|stop}" exit ;; esac # exit
作成したら、chmod 755 で実行可能にしておく。
オーナーやグループを変えるという話もあるが、しなくても他ユーザから実行できればOKのようだ。
dbstart, dbshutの修正
Oracleに付属しているシェルがそのままでは動かない(!)ので修正が必要。
$ORACLE_HOME/bin/dbstartを修正。
対象は4箇所。
1行目にシェル指定を追加 #!/bin/bash ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle ↓ 以下に変更 ORACLE_HOME_LISTNER=$1 ORATAB=/etc/oratab ↓ 以下に変更 ORATAB=/var/opt/oracle/oratab export VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL for " | cu t -d' ' -f5 | cut -d'.' -f1` ↓ 以下に変更 VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1` export VER10LIST
$ORACLE_HOME/bin/dbshutを修正。
こちらは1箇所。
私の環境ではoratabのパスは/var配下になっていたので修正してないけど、
環境と一致しているか確認が必要。
1行目にシェル指定を追加 #!/bin/bash
dboraの起動確認
ここまで修正したら、作成したスクリプトが実行できるか確認する。
rootユーザで、
# /etc/init.d/dbora start
# /etc/init.d/dbora stop
エラーが出なければOK。
いろいろ出力されて見にくいけれど、うまくいけばstartおよびshutdownのログが表示される。
自動起動の設定
rootユーザで以下のコマンドを入力。
リンクが作成される。
# ln -s /etc/init.d/dbora /etc/rc3.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora