Windowsでは、OSを起動するとOracleも自動的に起動するようになっていますが、
Linux/UNIXではいくつかの設定が必要です。
自動起動ができない原因の多くは、設定のミスにあります。
自動起動の仕組みを理解する
正しく設定するためには、自動起動の仕組みを理解する必要があります。
自動起動に関連するファイルは次の4つです。
1から3がOracleに含まれていて、4はユーザーが作成します。
(ただしMIRACLE LINUXにはすでに付属しています。)
1. $ORACLE_HOME/bin/dbstart DB起動スクリプト
2. $ORACLE_HOME/bin/dbstop DB停止スクリプト
3. /etc/oratab インスタンスの定義ファイル
4. /etc/rc.d/init.d/dbora サービスのスクリプト
1、/etc/oratabを編集する
「SID:$ORACLE_HOME:Y」の通り変更します。
例:
Ora10gTest:/u01/oracle/app/oracle/product/10.2.0/db_1:Y
2、dboraスクリプトを作成する
MIRACLE LINUXでははじめからdboraが付属していますが、Red Hat Linuxでは自分で作成する必要があります。
ORA_HOME=/u01/oracle/app/oracle/product/10.2.0/db_1
ORA_OWNER=oracle
export ORACLE_HOME=$ORA_HOME
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
start)
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/dbora
;;
stop)
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
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
注意:起動するのはデータベース、リスナーとEMです、個人的にEMいらないなら、emctlの行をコメントアウトしてください
3、dboraをOSに登録する
先ほど作成したスクリプトをchkconfigコマンドが認識可能なディレクトリへコピーします。
# cp dbora /etc/rc.d/init.d/
# chmod 755 /etc/rc.d/init.d/dbora
作成したスクリプトに下記の行が含まれています。
# chkconfig: 2345 99 10
# description: starts and stops oracle instances
これはchkconfigコマンド用の設定です。
・ランレベル2,3,4,5にS99dboraスクリプトを生成する
・ランレベル0,1,6にK10dboraスクリプトを生成する
を意味します。
# chkconfig --add dbora
確認してみると、全て配置済みです。
[root@Ora10gTest ~]# find /etc/rc.d/ -name S99dbora
/etc/rc.d/rc2.d/S99dbora
/etc/rc.d/rc3.d/S99dbora
/etc/rc.d/rc4.d/S99dbora
/etc/rc.d/rc5.d/S99dbora
[root@Ora10gTest ~]# find /etc/rc.d/ -name K10dbora
/etc/rc.d/rc1.d/K10dbora
/etc/rc.d/rc6.d/K10dbora
/etc/rc.d/rc0.d/K10dbora
[root@Ora10gTest ~]# chkconfig --list dbora
dbora 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4、dbstartバグ修正
上記のままでDBを起動してみると
[root@Ora10gTest ~]# /etc/rc.d/init.d/dbora start
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
Processing Database instance "Ora10gTest": log file /u01/oracle/app/oracle/product/10.2.0/db_1/startup.log
のようなエラーが出ます。
$ORACLE_HOME/bin/dbstartを修正することで解消します
旧78行目:ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
新78行目:ORACLE_HOME_LISTNER=$ORACLE_HOME