ORACLE 11 g RHEL 5システムの自動起動とオフの設定方法


スクリプトを作成し、サービスを登録した後、テストを経て、ORACLEはRHELの起動に従って起動できますが、システムがオフになってからは閉じられません。ネットで答えを探していますが、ほとんどの設置過程は同じ文章からそのまま写したものです。全然だめです。天下の文章は大抄である。他の人を助けても良い解決策が得られませんでした。仕方がなくて、自分で心を静めてゆっくりと分析を研究して、やっと問題の肝心な原因のありかを探し当てました。今は私の成功設定の過程を全部貼り付けて、皆さんの参考にして、回り道を少なくしてください。その他にやはり他の人に一つの提案をあげます。無理にその通りに運んではいけません。断片的に意味を取ります。さもなければ、その害は大きいです。まず、RHELにORACLEシステムの自動起動を許可するよう設定します。標準設定では不可能に設定されています。操作は以下の通りです。rootアカウントで修正/etc/orabファイル:璜vi/etc/orabがorcl=/db/ap/oracle/product/11.1.0/db_を見つけました。1:Nこの行はorcl=/db/ap/oracle/product/11.1.0/db_に変更されました。1:Yは最後のNをYに変えます。自動起動が許可されていないことを自動起動に変更するという意味です。そして、ORACLEで持参した起動とクローズスクリプトを修正します。それぞれdbstartとdbshutです。この二つのスクリプトを実行すると、ORACLEスクリプトの起動とクローズが実現されます。oracleアカウントで$ORACLE_を修正します。HOME/bin/dbstartファイル:
 
# su - ORACLE
$ cd $ORACLE_HOME/bin
$ vi dbstart
ORACLE_を見つけました。HOMELISTNER=$1この行はORACLE_に変更されました。HOMELISTNER=$ORACLE_HOMEがこのステップをしたのは、このシナリオが自動的に生成される時、つまりORACLEがRHELにインストールされた時、このシナリオはあなたのORACLEを知らないからです。HOMELISTNERは何ですか?今はこのパラメータを表示します。このスクリプトを実行する時にORACLEに報告しません。HOMELISTNERは指定されたエラーがありません。注意:dbstartとdbshutスクリプトは10 g後に既にモニターの起動とクローズをデータベースインスタンスに統合した起動とスクリプトを閉じました。単独で別れるのではないです。同じ方法でdbshutのこのパラメータを変更します。ここではもう詳しく書きません。彼らは同じディレクトリの下にいます。再度、スクリプトを書いて、システムサービスに登録して、起動とシャットダウンの時に実行させます。その役割はdbstartとdbshutを呼び出して実行することです。これでデータベースの起動と閉鎖が実現されるのではないですか?このスクリプトは/etc/init.dディレクトリに置かれています。シナリオの名前はoracle 11シナリオです。
 
#!/bin/bash
# chkconfig: 2345 99 10
# description: Startup Script for oracle Databases
# /etc/rc.d/init.d/oradbstart
export ORACLE_BASE=/db/app/oracle/
export ORACLE_HOME=/db/app/oracle/product/11.1.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
echo "-----startup oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle11
echo "-----startup oracle successful-----" >> /var/log/oracle11log
echo "OK"

stop)
echo "-----shutdwn oracle-----" >> /var/log/oracle11log
su oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle11
echo "-----shutdown oracle successful-----" >> /var/log/oracle11log
echo "OK"

*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
は保存して終了します。今、私はこのシナリオに対して鍵となる説明をしたいです。第一に、宛chkconfig:2345 99は一行の注釈ですが、肝心な必須の行はchkconfigコマンドを使わずに自動的にシンボルの接続ファイルを生成する以外は、完全に手動で作成します。さもなくば、この行がないと、chkconfigシステムを実行すると、oracle 11にchkconfigサービスの権限がないというエラーが発生します。第二:su oracle-c$ORACLE_HOME/bin/dbstartとtouch/var/lock/subsys/oracle 11の2つの行の役割は、まずdbstartスクリプトの起動oracleを実行し、サービス活動リストディレクトリにoracle 11というサービスと同名のファイルを作成し、このサービスが活動的、つまり起動されることを示しています。su oracle-c$ORACLE_HOME/bin/dbshutとrm-f/var/lock/subsys/oracle 11の2つの行の役割は、まずdbshut急遽スクリプトを実行してoracleをクローズし、サービス活動リストリストからoracle 11と同名のそのファイルを削除します。このサービスは活動ではなく、つまりすでにクローズされているということです。なぜtouch/var/lock/subsys/oracle 11とrm-f/var/lock/subsys/oracle 11の二歩をしますか?理由は、LINUXシステムのメカニズムに関連しています。LINUXは、サービスが起動されているかどうかを判別する根拠として、/var/lock/subsys/ディレクトリの下に服と同名のファイルがあるかどうかを示しています。もしあれば、このサービスが起動されているということです。システムが閉まっている時に、LINUXはここに記載されているサービスを全て閉鎖し、サービスと同名のファイルを削除します。一つのサービスが起動されても、このディレクトリにそのサービスの同名ファイルがないと、そのサービスは閉じられません。ネット上の記事はこの場所を間違って設定していますので、ORACLEはシステムに従って起動できますが、システムが閉じられていません。私もこの原理を分析しました。実験の結果,やはりそうだった。mysqlの起動と台本のクローズもこのようにしています。なるほど。このところに注意してください。最後に、このスクリプトをシステムサービスに登録すればいいです。方法は2つあります。以下のコマンドを実行します。
 
#su - root
chown oracle /etc/init.d/oracle11
chmod 775 /etc/init.d/oracle11
シンボルリンクファイルを作成します。chkconfig--add/etc/init.d/oracle 11を実行するには、このコマンドを実行するには、あなたがシナリオの中に芫chkconfigを書く必要があります。このコマンドが実行されると、oracle 11ファイルでこの行のコメントを探して、この行のコメントを解析します。解析結果によって、/etc/rc.d/rc.2.dです。etc/rc.d/rc 3.d;etc/rc.d/rc.4 d;ETC/rc.d/rc 5.0 dでシンボル接続ファイルS 99 oracle 11ファイルを作成し、このファイルはシステム起動時に実行されるものですが、実はこのファイルは/etc/init.d/oracle 11を指しています。起動時にシステムはこのファイルにstartパラメータを送信し、oracle 11ファイル中のstart分岐を実行しました。また/etc/rc.d/rc 0.dにあります。/etc/rc.d/rc 1.d;ETC/rc.d/rc 6.dでK 10 orace 11ファイルを作成し、このファイルはシステムクローズ時に実行します。実はこのファイルも/etc/init.d/oracle 11を指しています。クローズ時にシステムはこのファイルにstopパラメータを送信し、orace 11ファイルのstop分岐を実行しました。これらの数字の意味は分かりますよね。2、3、4、5段階でこのサービスを開始します。99は該当する/etc/rc.d/rc.d(Nは前のレベル、ここは2345)ディレクトリで作成されたリンクファイルのシリアル番号(スタート優先レベル)S 99 oracle 11です。10は、前述のレベルに対応する/etc/rc.d/rc.d(Nは2345を除くレベル)ディレクトリで生成されるリンクファイルのシーケンス番号(サービス停止の優先レベル)K 10 orace 11である。なぜこれらのディレクトリにファイルとファイルの命名ルールを作るかというと、LINUXのシステム起動プロセスについてよく知っています。ここでは詳しく説明しません。二つ目は、手動でシンボル接続ファイルを作成する楽しみを試したいなら、以下のコマンドを実行してください。
 
#su - root
ln -s /etc/init.d/oracle11 /etc/rc.d/rc2.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc3.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc4.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc5.d/S99oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc0.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc1.d/K10oracle11
ln -s /etc/init.d/oracle11 /etc/rc.d/rc6.d/K10oracle11
作用効果とchkconfig--add oracle 11の実行は同じです。これで設定過程が終わります。テストを行いましょう。
 
#cd /etc/init.d
sh oracle11 start
実行後、/var/logディレクトリのoracle 11 logファイルを見てください。中にはスクリプトの起動分岐出力情報がありますか?shoracle 11 stopを実行した後、/var/logディレクトリのoracle 11 logファイルを見てみます。中にはスクリプトのオフ分岐出力情報がありますか?情報を見たら、設定が成功したということです。もしないなら、もう一度詳しく設定してください。ファイルの権限問題に注意してください。LINUXのユーザー概念はとても厳しいです。やはりマルチユーザシステムですね。文章は作者のオリジナルです。転載は出所を明記してください。来源:http://blog.csdn.net/kanon_lgt/