SI Object Browser(以下、OB)に関するお問い合わせでよくあるのが、今回のタイトル「Oracleに接続できない」というものです。
ひとくちに「接続できない」と言ってもいくつかの原因があり、それぞれ対処法が異なります。エラーメッセージによっては原因が今一つ伝わらず、調査に時間がかかってしまうことも・・・
今回はOracle接続の仕組みと照らして、よくある事例と対処法をご紹介してみたいと思います。
Oracle 接続の仕組み
まずはOracle接続の仕組みを確認してみましょう。
下の図は、OBのログイン画面で認証情報を入力し、[接続]ボタンを押下した後の流れを簡単に表したものです。
- 図1. Oracle接続(リモート接続)の仕組み -
OBで[接続]ボタンを押下すると、
① Oracle Clientを参照・経由し、
② ネットワーク通信、サーバ側のListenerを介して
③ Oracle Databaseに認証、接続を確立
④ 接続確立した後はListenerを介さずDatabase⇔Client⇔OBの通信
という流れになります。
よって、エラーの原因はこの流れのどこかに問題があるといえます。
それでは、よくある事例と対処法を見ていきましょう。 [RELATED_POSTS]
OBがOracle Clientを参照する際のエラー
OBはOracle Clientが必要なアプリケーションですのでOracle Clientを参照することができない場合、
以下のエラーを表示します。
- 図2. Oracle Clientの参照エラー -
よくある事例 |
対処法 |
Oracle Clientがインストールされていない |
Oracle Clientをインストールする |
OBがORACLE_HOMEを正しく認識できていない |
OBのツールメニュー > オプション > 詳細設定タブ > ORACLE_HOMEにOracle Clientのインストールパスを設定する |
OBとOracle Clientのbit(32bit/64bit)が異なる |
OBとOracle Clientのbitを同一にする |
2つ目と3つ目については、以前の記事「Oracle Instant ClientでOBを使ってみよう」で詳しくご紹介しています。
また、1つ目についてもOracle Instant Clientで代用することが可能ですので、併せてご一読ください。
Oracle Client→Listener間のエラー
Oracle ClientからListenerへはネットワーク通信が発生します。
クライアントからサーバへ到達することができない、Oracle Clientにおいて宛先の情報が正しく記載されていない、あるいはListenerに問題がある場合に接続エラーが発生します。
- 図3. ネットワーク不通時のエラー –
- 図4. tnsnames.oraの記述誤りによるエラー -
- 図5. Listenerが起動していない場合のエラー -
よくある事例 |
対処法 |
ネットワーク疎通に問題があり、サーバアクセスできない |
pingが通るか、ファイアウォールにより接続を拒否されていないかを確認し対応する |
Oracle Client側の設定(tnsnames.ora)に誤りがあり、サーバアクセスできない |
クライアント側のtnsnames.oraを開き、接続対象の記述を修正する |
Listenerが起動していない、あるいは構成に問題がある |
Listenerを起動する、listener.logを確認し対応する |
お問い合わせいただく中では、サーバアクセスに関する問題であることが多いようです。
切り分けの手段としてはpingのほかに、Oracle Client付属のtnspingでの疎通確認やDB管理者によるlistener.logの確認が挙げられます。
Listener→Oracle Database間のエラー
Listenerまで到達すると、Oracle Databaseへ接続するための認証プロセスが実行されます。
よって、認証における問題やそもそもOracle Databaseがオープンしていないなどの原因が挙げられます。
- 図6. パスワードが間違っている場合のエラー -
- 図7. アカウントがロックされている場合のエラー -
- 図8. Oracle Databaseがオープンしていない場合のエラー -
よくある事例 |
対処法 |
ユーザー名またはパスワードに誤りがある |
正しい情報を入力する ※Oracle Database 11g以降の場合、既定で大文字/小文字を区別する |
ユーザーがロックされている、パスワードが期限切れである、あるいは権限が不足している |
ALTER USER文、GRANT文を実行する |
Oracle Databaseがオープンしていない |
Oracle Databaseをオープンする |
ListenerからOracle Database間のエラーについては、基本的にDB管理者に対応を依頼することが多くなるかと思います。
接続確立後のエラー
接続確立後にエラーが発生するというケースはネットワークやOracle Database、サーバの障害が考えられます。
- 図9. 接続後にネットワーク/接続DBを停止した場合のエラー -
よくある事例 |
対処法 |
ネットワーク構成機器のタイムアウト設定やネットワークのダウンにより通信ができなくなった |
ネットワーク接続に問題がないかを確認する |
サーバの障害や意図しない誤操作によりOracle Databaseのプロセスが停止した |
インスタンスを起動する、Oracle12cかつCDB構成の場合は対象PDBをオープンする |
こちらも、システム管理者やDB管理者での対応が主となります。
まとめ
いかがでしたか?
今回はOracle Databaseに接続する場合のよくある事例と対処法についてご紹介しました。
掲載したスクリーンショットはOB上で表示されるものですが、システム開発においてプログラムからOracle Databaseに接続できない、という場合でも同様のメッセージが表示されると思います。
中々切り分けは難しいですが、一つずつ順を追って確認していくことで解決につながります。
OBの利用に限らず、ぜひ参考にしてください。
- カテゴリ:
- キーワード: