我尝试使用EntityFramework(ODP.NET)将可能大量的二进制数据插入到远程Oracle(11 g)数据库中。它适用于非常小的文件(<5 KB),但对于较大的文件(例如44 KB)我得到一个错误:“ORA-03135:连接失去联系”。
我不认为这是超时,因为异常发生在执行命令的一秒钟内。
我尝试在连接字符串中设置以下两项,但没有效果:
Validate Connection=true
Pooling=false
我还查看了远程机器上的listener.log
文件。它显示正在建立的连接,但没有异常或终止连接的迹象。
我准备接受建议的修复或故障排除方法。
编辑:
在访问本地网络上的Oracle示例时,也可以使用相同的SQL操作。
4条答案
按热度按时间zzlelutf1#
这可能是一个复杂的问题,有许多不同的可能原因和解决方案。从这里开始:
http://www.dba-oracle.com/t_ora_03135_connection_lost_contact.htm
答:oerr实用程序显示ORA-03135错误:
ORA-03135:连接失去联系
原因:1)服务器意外终止或被迫终止。或2)服务器连接超时。
操作:1)检查服务器会话是否已终止。2)检查sqlnet. ora中的超时参数设置是否正确。
ORA-03135错误是远程连接时防火墙终止连接时常见的错误。
ORA-03135错误的一个解决方案是增加sqlnet.ora文件中的sqlnet. oraexpire_time参数的值,或者检查SQL*Plus配置文件中的expire参数。
要诊断ORA-03135错误,首先使用ps -ef检查OS PID是否仍然存在|grep语法。
检查客户端和服务器之间是否存在网络地址转换(NAT
在Windows中,检查Windows防火墙是否正在检查您的本地连接:
Windows XP ->控制面板->安全->选项卡“高级”
此外,将参数sqlnet.inbound_connect_timeout和inbound_connect_timeout_listenername设置为0可以停止ORA-03135错误。
同样如上所述,检查数据库警报日志中是否存在与连接断开同时发生的错误。例如,有时它可能由ora-600或ora-7445引起。它不应该出现在侦听器日志中,因为只有在握手完成后才会出现此错误。
gywdnpxw2#
这种情况通常是由于断开/陈旧连接取自连接池。如果您在Pooling=false之后得到此异常,则很可能是由于**tcp空闲超时而导致防火墙阻止连接。**确保tcp空闲超时值大于预期的命令执行时间
mwngjboj3#
尝试使用KeepAlive设置,这可以防止连接丢失的池错误.
https://github.com/oracle/dotnet-db-samples/issues/58(最初用于.NET Core和不低于2.19.100的Oracle.ManagedDataAccess.Core版本)
connection.KeepAlive = true;
在打开连接之前vuktfyat4#
删除oracle客户端..重新安装oracle客户端。并在tnsnames文件中给予正确的网络和oracle连接