.NET 4.0 アプリケーションが突然 TNS エラーで動作を停止する (IIS 7.5、Oracle 11.2.0 クライアント)

.NET 4.0 アプリケーションが突然 TNS エラーで動作を停止する (IIS 7.5、Oracle 11.2.0 クライアント)

私は IIS 7.5 Web サーバーをサポートしていますが、アプリ プールで少し問題があります。時々、Oracle データベースへの接続を使用しているアプリケーションが動作を停止し、「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」というエラーが発生します。困ったことに、データベース サーバー、Web サーバー、またはアプリ内では何も変更されていません。データベースへの TNS Ping を試しましたが、問題なく接続されます。SQL Server データベースを使用している同じアプリ プール内のアプリには問題はないようです。

重要: アプリを別のアプリ プールに属するように変更すると、アプリは再び動作するようになります。元のアプリ プールに戻すと、エラーは解消されません。

ここで何が起こっているのでしょうか? 問題が突然発生し、特定のプールにのみ影響する理由がわかりません。

ありがとう!

答え1

Linux で TNS リスナーに ping を実行して、次のように動作しているかどうかを確認してください。

tnsping oracle
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle)))
...
OK (2311770 msec)

起動しているが、TNS リスナーからステータスを取得できない場合は、次のようにします。

lsnrctl status
TNS-01153: Failed to process string: �9M0

次のコマンドを使用して、リスナーをエラーなしで強制的に更新してみてください (これも Linux なので、同等の Windows Server コマンドを探してください)。

lsnrctl start oracle
TNS-01106: Listener using listener name LISTENER has already been started

これは、ハードウェア、および/または/Oracle の不適切なチューニング、および/または/Oracle の不適切な構成に関連している可能性があります。私も、Apache-Tomcat を Web サーバーとして実行していることを除いて、あなたと同じエラーが発生しています。Web サーバーを起動するとすぐに、Oracle サービスが停止します (TNS:リスナー エラー、および Web アプリケーションでソケット タイムアウト例外が表示されます)。TNS サービスが停止する前に、実際にしばらくアプリケーションを実行できる可能性はないようです。これは OS の部分だと思います。

私は仮想マシン、CentOS 6.6 がインストールされた VM Fusion を使用していますが、この VM は 3 台のラップトップのうち 1 台でのみ正常に動作します。これは RAM メモリに関連している可能性があります。この問題が発生した場合、サーバーの RAM はどのようになっているのでしょうか。これを数回増やして問題は解決しましたが、その後元に戻ってしまいました。この問題を解決する唯一の方法は、RAM を監視し、最大値に達したときに自動的にクリーンアップしてから、次の方法で強制的に実行することです。

lsnrctl start oracle

関連情報