Ora 3136
  • 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 on1012 12:00:04 2009
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
ERROR:
ORA-12170: TNS: 接続タイムアウトが発生しました。
 
ユーザー名を入力してください:

②情報によって、次の手は

  • ネットワークの状況を調べて、ネット通信を直す

ping <host>

  • サーバのリスナーを立ち上げる

lsnrctl start <listener>

連載中。。。