我正在尝试使用Entity Framework(ODP.Net)将具有潜在大量二进制数据的插入到远程Oracle(11g)数据库中.它适用于非常小的文件(<5 KB),但对于较大的文件(例如44 KB),我收到错误:"ORA-03135:连接失去联系".
我不认为它超时,因为异常发生在执行命令的一秒钟内.
我尝试在我的连接字符串中设置以下两个,但无济于事:
Validate Connection=true
Pooling=false
我也查看listener.log
了远程机器上的文件.它显示正在建立的连接,但没有异常或终止连接的迹象.
我想要建议的修复或故障排除方法.
编辑:
访问本地网络上的Oracle实例时,相同的SQL操作有效.
这可能是一个复杂的问题,有许多不同的可能原因和解决方案。从这里开始:
\n\nhttp://www.dba-oracle.com/t_ora_03135_connection_lost_contact.htm
\n\n\n\n\n答案:oerr 实用程序显示 ORA-03135 错误:
\n\nORA-03135: 连接失去联系
\n\n原因:1) 服务器意外终止或被迫终止。\n 或 2) 服务器连接超时。
\n\n操作: 1) 检查服务器会话是否终止。\n 2) 检查 sqlnet.ora 中的超时参数是否设置正确。
\n\n当防火墙终止连接时进行远程连接时,ORA-03135 错误很常见。
\n\nORA-03135 错误的一种解决方案是增加 sqlnet.ora 文件中 sqlnet.ora expire_time 参数的值,或检查 SQL*Plus 配置文件中的过期参数。
\n\n要诊断 ORA-03135 错误,请首先使用 ps \xe2\x80\x93ef|grep 语法检查操作系统 PID 是否仍然存在。
\n\n检查客户端和服务器之间是否存在网络地址转换 (NAT)
\n\n在 Windows 中,检查 Windows 防火墙是否正在检查您的本地连接:
\n\nWindows XP -> 控制面板 -> 安全 -> 选项卡“高级”
\n\n另外,将参数 sqlnet.inbound_connect_timeout 和 inbound_connect_timeout_listenername 设置为 0 可以阻止 ORA-03135 错误。
\n
同样如上所述,检查数据库警报日志以了解在连接断开的同时发生的错误。例如,有时它可能是由 ora-600 或 ora-7445 引起的。它不应出现在侦听器日志中,因为只有在握手完成后才会收到此错误。
\n