OBをトコトン極める

Oracle 接続できない…よくある事例と対処法

  • 2018.07.09
  • 株式会社システムインテグレータ
Oracle 接続できない…よくある事例と対処法

SI Object Browser(以下、OB)に関するお問い合わせでよくあるのが、今回のタイトル「Oracleに接続できない」というものです。

ひとくちに「接続できない」と言ってもいくつかの原因があり、それぞれ対処法が異なります。エラーメッセージによっては原因が今一つ伝わらず、調査に時間がかかってしまうことも・・・

今回はOracle接続の仕組みと照らして、よくある事例と対処法をご紹介してみたいと思います。

Oracle 接続の仕組み

まずはOracle接続の仕組みを確認してみましょう。

下の図は、OBのログイン画面で認証情報を入力し、[接続]ボタンを押下した後の流れを簡単に表したものです。

1

- 図1. Oracle接続(リモート接続)の仕組み -

OBで[接続]ボタンを押下すると、

 ① Oracle Clientを参照・経由し、

 ② ネットワーク通信、サーバ側のListenerを介して

 ③ Oracle Databaseに認証、接続を確立

 ④ 接続確立した後はListenerを介さずDatabaseClientOBの通信

という流れになります。 

よって、エラーの原因はこの流れのどこかに問題があるといえます。
それでは、よくある事例と対処法を見ていきましょう。

①OBがOracle Clientを参照する際のエラー

OBはOracle Clientが必要なアプリケーションですのでOracle Clientを参照することができない場合、

以下のエラーを表示します。

- 図2. Oracle Clientの参照エラー -

よくある事例

対処法

Oracle Clientがインストールされていない

Oracle Clientをインストールする

OBがORACLE_HOMEを正しく認識できていない

OBのツールメニュー > オプション > 詳細設定タブ > ORACLE_HOMEOracle Clientのインストールパスを設定する

OBとOracle Clientbit(32bit/64bit)が異なる

OBとOracle Clientbitを同一にする


2つ目と
3つ目については、以前の記事「Oracle Instant ClientでOBを使ってみよう」で詳しくご紹介しています。

また、1つ目についてもOracle Instant Clientで代用することが可能ですので、併せてご一読ください。


②Oracle Client→Listener間のエラー

Oracle ClientからListenerへはネットワーク通信が発生します。

クライアントからサーバへ到達することができない、Oracle Clientにおいて宛先の情報が正しく記載されていない、あるいはListenerに問題がある場合に接続エラーが発生します。

3

- 図3. ネットワーク不通時のエラー

- 図4. tnsnames.oraの記述誤りによるエラー -

5

- 図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

 - 図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の利用に限らず、ぜひ参考にしてください。

いまさら聞けない Oracleの基本

いまさら聞けない Oracleの基本