Asianux Server 3にはOracleを自動起動させる為のスクリプトdboraが/etc/rc.d/init.dに用意されています。
これを使ってOracle Databaseを自動起動するように設定してみたいと思います。
■dboraの内容はこんな感じ
1:#!/bin/sh
2:#
3:# chkconfig: - 99 10
4:# description: Oracle Database Server
5:# processname: ora_
6:#
7:# dbora This shell script takes care of starting and stopping
8:# Oracle Database Server.
9:
10:SUBSYS=/var/lock/subsys/dbora
11:
12:dbora_init() {
13: # get ORACLE_HOME from the first entry,
14: # whose 3rd field is Y, in /etc/oratab.
15: if [ ! -f /etc/oratab ]
16: then
17: echo "auto startup/shutdown of Oracle: /etc/oratab does not exist."
18: exit 1
19: fi
20: ORA_HOME=`awk -F: '/^[^#:]+:.+:[Y]$/ { print $2; exit}' /etc/oratab`
21:
22: if [ x$ORA_HOME = "x" ]; then
23: echo "There is not Y entry in /etc/oratab."
24: exit 1
25: fi
26:
27: # get oracle's owner from owner of dbstart.
28: if [ ! -f $ORA_HOME/bin/dbstart ]
29: then
30: echo "auto startup/shutdown of Oracle: Oracle may not be installed" \
31: "correctly."
32: exit 1
33: fi
34: ORA_OWNER=`ls -l $ORA_HOME/bin/dbstart | awk '{print $3}'`
35:}
36:
37:case "$1" in
38:'start')
39: if [ -f $SUBSYS ]; then
40: echo $0 already started.
41: exit 1
42: fi
43: dbora_init
44: # Start the Oracle databases:
45: su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
46: su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
47: # Start Intelligent Agent and Oracle Management Server
48: # --- for Oracle9i ---
49: # su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl start"
50: # su - $ORA_OWNER -c "$ORA_HOME/bin/oemctl start oms"
51: # --- for Oracle Database 10g ---
52: # su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
53: # --------------------
54: # Start the Oracle HTTP Server
55: # This is a BUG workaround. $ORACLE_HOME/Apache/Jserv/etc
56: # /jserv.properties needs DISPLAY.
57: # test -z "$DISPLAY" && export DISPLAY=":60000.0"
58: # su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
59: # --------------------
60: touch $SUBSYS
61: ;;
62:
63:'stop')
64: if [ ! -f $SUBSYS ]; then
65: echo $0 already stopped.
66: exit 1
67: fi
68: dbora_init
69: # Stop Intelligent Agent
70: # --- for Oracle9i ---
71: # su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl stop"
72: # --- for Oracle Database 10g ---
73: # su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
74: # --------------------
75: # Stop the Oracle HTTP Server
76: # su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
77: # --------------------
78: # Stop the Oracle databases:
79: su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
80: su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
81: rm -f $SUBSYS
82: ;;
83:
84:'restart')
85: $0 stop
86: $0 start
87: ;;
88:
89:'status')
90: if [ -f $SUBSYS ]; then
91: echo $0 started.
92: else
93: echo $0 stopped.
94: fi
95: ;;
96:*)
97: echo "Usage: $0 {start|stop|status}"
98: exit 1
99:esac
100:
101:exit 0
■自動起動の手順
1. rootでログイン
2. /etc/oratabを開きます。
/etc/oratabはOracle DatabaseによりインストールされるOracleのインスタンスを自動起動するかどうかを
設定するファイルです。
内容は以下のようになっています。
orcl:/u01/app/oracle/product/11.1.0/db_1:N
末尾のNをYに変更し自動起動するように設定します。
3. dboraをランレベル3および5で実行するように指定します。
# chkconfig --level 35 dbora on
この状態でOSを再起動します。
起動後psコマンドで確認するとOracleのインスタンスとリスナーが既に起動していることが確認できます。
※些細なことではありますがdboraではdbstartが"lsnrctl start"よりも前に来ていますので
まずdbstartからリスナーの起動が行われていますが、Oracle11gのdbstartではリスナーの起動も行う場合は
第一起動引数にリスナーのホームディレクトリのパスを指定するようになっている為、以下のようなエラーが
発生してリスナーの起動に失敗しています。
ORACLE_HOME_LISTNER is not SET,unable to start Oracle Net Listener
(尚、リスナーはlsnrctl startの方で起動されているので問題ではありません)
これが気になる場合は45行目を「su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"」に変更
するか、45行目と46行目をひっくり返して"lsnrctl start"でリスナーを起動するようにします。
これでインスタンスとリスナーは自動起動されるようになったのですが、どうせならDatabase Consoleも自動起動
するようにしたいですよね。
5. dboraの52行目の「su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"」のコメントアウトを
解除してDatabase Consoleを起動するようにします。
またdboraの73行目の「su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"」のコメントアウトも
解除してstop時にDatabase Controlを停止するようにします。
これでもう一度OSを再起動してみます。
今度はOS起動後すぐにfirefoxを起動するとDatabase ConsoleのEnterprise Managerに接続できるようになっています。
関連記事: