Oracleで「リスナーがありません」なエラーの対処法いろいろ
久しぶりに Oracle を使ったシステムのテスト環境を作ろうとしたら、「リスナーがありません」というエラーでハマったので、忘れないためにも解決策をメモメモです φ(..)。
ちなみに状況によって「ORA-12224: TNS: リスナーがありません」と「ORA-12541: TNS: リスナーがありません」という、エラーコードの違う2パターンのメッセージが出るようですが、内容的にはどちらも同じっぽいです。
このエラーの原因としてまず一番単純なのはリスナーが落ちているパターンで、この場合はホストPCでリスナーを起動してやれば解決するハズです。
そうでなければホストPCが非常に高負荷になっていたり、リスナーの同時接続要求数の上限を超えて接続しようとした場合にも発生するようです。
こうなってしまうと、やっぱり負荷が下がるとか接続数が減るのを待つしかないと思われます。
あとはクライアントPCの tnsnames.ora の記載に誤りがあるパターンです。HOST に指定したPCが実際に接続しようとしていたPCと違っていたとか、PORT が違っていたりとか。
とはいえ、これはクライアントPCの tnsnames.ora の記載を直してやればOKなんですが・・・
このパターンの亜種としてホストPCの listener.ora の記載と、クライアントPCの tnsnames.ora の記載に齟齬がある場合がありまして、これが実に厄介なんですよ。
よくハマるのが HOST の指定でして、片方がホスト名で片方がIPアドレスという記載の場合だとエラーになります。
以下はうまく繋がるパターンの listener.ora と tnsnames.ora なのですが、それでもエラーになってしまうパターンがあるんです。
今回ハマったのはまさにそれで、HOST の記載は同じでも、ホストPCとクライアントPCで指定したホスト名が返すIPアドレスが違ってたんですね・・・orz
どうなっていたかというと、ホストPCではループバックアドレス(127.0.0.1)を取得していて、クライアントPCではホストPCのIPアドレス(192.168.0.3 とか)を取得していたんです。
なんとなくそれでも良いような気がするのですが、ダメなんですねぇ。
というわけで、ホストPCの hostsファイルをいじってホストPCでも自分の(ループバックでない)IPアドレスを取得できるようにして、ようやくクライアントから接続できました。
参照リンク
・ORA-12541 - オラクル・Oracle エラー FAQ
・ORA-12224: TNS: リスナーがありません。 (TNS-12224) | 技術情報 | 株式会社コーソル
さんくす。
同じ内容で2時間はまった。
このパターンはわがりにぐい。
Posted by: suga | 08/10/2018 at 14:40
コメントありがとうございます。
お役に立てたようで何よりです。
Posted by: 夢界 | 08/14/2018 at 20:29