- ORA-3136 ORA-03136: インバウンド接続がタイムアウトになりました
オフィシャルのマニュアルに下記のように書いてあるが、根本的な原因を特定しないと解決にならない。ここで、いくつ解決方法を考えた。
原因: SQLNET.INBOUND_CONNECT_TIMEOUTで指定された時間またはデフォルト値で指定された時間内にユーザー認証が完了しなかったため、インバウンド接続がサーバーによってタイムアウトされました。
処置:
1) SQL*NetとRDBMSのログを調べて、疑わしい接続がないかどうか確認してください。
2) 必要に応じて、適切なインバウンド接続タイムアウトを指定してSQL*Netを構成してください。
問題を分解すれば、わかりやすくなる。
オラクルのネットワークサービスと関係するのは下記の3階層である。(すべてオラクル社製というわけではないから、オラクルのマニュアルに説明が少し足りないように感じる。)
↓ C3 クライアントソフト | ↑ S3 Oracle サーバープロセス | |
↓ C2 OCI(Oracle Client Interface) | ↑ S2 Service Interface | |
↓ C1 TNS(Transparent Name Service)層 | ↑ S1 Oracle Listener | |
↓ N0 Network - TCP/IP | <-TCP/IP接続-> | ↑ N0 Network - TCP/IP |
①tnspingで最上層の接続を確かめてみよう
tnsping <tnsname>
############ # 成功の例 >tnsping oratst TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-10月-2009 11:52:29 Copyright (c) 1997, 2005, Oracle. All rights reserved. パラメータ・ファイルを使用しました: C:\oracle\product\10.2.0\client_2\network\admin\sqlnet.ora エイリアスを解決するためにTNSNAMESアダプタを使用しました。 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.17)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.18)(P ORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oratst))) OK (20ミリ秒) ############ # 失敗の例① >tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-10月-2009 11:51:53 Copyright (c) 1997, 2005, Oracle. All rights reserved. パラメータ・ファイルを使用しました: C:\oracle\product\10.2.0\client_2\network\admin\sqlnet.ora エイリアスを解決するためにTNSNAMESアダプタを使用しました。 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 127.0.0.1)(Port = 1521))) (CONNECT_DATA = (SID = ORCL))) TNS-12541: TNS: リスナーがありません。 ############ # 失敗の例② >tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-10月-2009 11:59:06 Copyright (c) 1997, 2005, Oracle. All rights reserved. パラメータ・ファイルを使用しました: C:\oracle\product\10.2.0\client_2\network\admin\sqlnet.ora エイリアスを解決するためにTNSNAMESアダプタを使用しました。 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.13.251)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAM E = orcl))) TNS-12535: TNS: 操作はタイム・アウトしました。 C:\Documents and Settings\1049130>sqlplus system/manager@orcl SQL*Plus: Release 10.2.0.1.0 - Production on 月 10月 12 12:00:04 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. ERROR: ORA-12170: TNS: 接続タイムアウトが発生しました。 ユーザー名を入力してください:
②情報によって、次の手は
- ネットワークの状況を調べて、ネット通信を直す
ping <host>
- サーバのリスナーを立ち上げる
lsnrctl start <listener>
連載中。。。