レポ
クラウドで
伸びる人沈む人

連絡特定商取引将来設計運営方針&メルマガSEの彼女は?
成功レポート集 Fedora9インストール! EclipseでJava Oracleバックアップのアーキテクチャ ゼロからHPでCGI 便利ネット知識
無料レポ&講習 IT業界の実態 linux処方箋 Java処方箋 Oracle処方箋 Perl処方箋
シェルでオラクルの接続状態を確認する方法

<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バックアップの「嘘」も勉強

クラウドで伸びる人沈む人 ||Copyright © 2005-2020 SearchMan,All Rights Reserved.