.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

尝试 ping 你的 TNS 监听器,看看它是否在 Linux 上正常运行,类似如下操作:

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 服务器命令):

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

这可能与硬件/和/或/糟糕的 Oracle 调优/和/或/糟糕的 Oracle 配置有关,我有和你完全相同的错误,只是我正在运行 Apache-Tomcat 作为 Web 服务器,并且在我启动 Web 服务器后,我的 Oracle 服务立即停止(TNS:监听器错误,并且在我的 Web 应用程序上我看到套接字超时异常)在 TNS 服务停止之前,你没有机会真正运行你的应用程序一段时间,我想这是操作系统的部分。

我正在使用虚拟机 VM Fusion,其中安装了 CentOS 6.6,这个虚拟机在 3 台不同的笔记本电脑中只有 1 台运行良好,我可以确认它可能与 RAM 内存有关,当发生这种情况时,它看起来如何?我多次增加了这个值,它解决了这个问题,但后来又出现了,摆脱它的唯一方法是监控 RAM 并在达到最大值时自动清理它,然后强制它运行:

lsnrctl start oracle

相关内容