クラウドで 伸びる人沈む人 |
|
|
|
シェルでオラクルの接続状態を確認する方法
<IT技術の処方箋:シェルでオラクルの接続状態を確認する方法> シェルなどのプログラムを書いていて、 オラクルの接続状態を確認したい場合がありますね。 オラクルが接続できないのに、DBへの接続アプリを 実行してもエラーが出るだけですね。 そんな場合、どうすればいいのでしょうか? 説明よりも実際に試してみましょう。 例えば、接続文字列SID、ユーザーuuu、パスワードppp、 で接続し、そのステータスをチェックする方法を コマンドラインでみていきましょう。 --------------ポイント------------------- select で 'XXX'という仮のデータを 強制的にdual から検索すること。('XXX'は何でもよい) grep で、'XXX'を検索し、ステータスを取得すること EOF で強制終了してしまうこと。 ---------------------------------------------- ●たぶん、言葉で言っても理解が難しいので、 実際に試してみましょう。 $ sqlplus uuu/ppp@SID <<EOF |grep XXX > select 'XXX' from dual; > EOF XXX ここで、grep XXX が成功したかどうかのステータスは、 $? という変数に記憶されるのです。 (とりあえず、理屈は抜きで、そう覚えてしまいましょう) ためしに、echo で表示してみましょう。 $ echo $? 0 0と出ましたね。 0 というのは、成功ステータスです。 つまり、| grep XXX が成功したことを意味します。 ●では、次に存在しないユーザーaaaで試してみましょう。 $ sqlplus aaa/ppp@SID <<EOF |grep XXX > select 'XXX' from dual; > EOF ここで、grep XXX が成功したかどうかのステータスは、 $? という変数に記憶されているはずですね。 ためしに、echo で表示してみましょう。 $ echo $? 1 今度は、1 が表示されました。 これは、失敗という意味です。 つまり、$?は、ゼロが成功、それ以外は失敗となります。 数字は色々意味があるようですが、ここでは詳細は省きます。 シェルで作成するならば、以下のようなかんじで使いましょう。 $ORACLE_HOME/sqlplus uuu/ppp@SID <<EOF |/bin/grep XXX select 'XXX' from dual; EOF if ($? == 0 ) then 処理内容 endif 参考)シェルでファイルの存在確認する方法 http://www.searchman.info/tips/1650.html 参考)シェルでpingの成功ステータスを確認する方法 http://www.searchman.info/tips/1660.html
慣れてきましたか?慣れてきたら、
Oracleバックアップの「嘘」も勉強 |