8
|
Grzenio · 技术社区 · 14 年前 |
![]() |
1
12
发生这种情况的原因是代码请求从Oracle连接池进行连接,而连接池返回到Oracle数据库的断开/过时连接。odp.net本身并不测试发送到客户端的连接的连接状态。
为了安全起见,您可以检查
或
让odp.net通过设置
这两种方法都会对性能产生影响,因为它们每次需要连接到数据库时都会测试连接状态。 我使用的第三个选项是使用异常。首先要乐观,使用从连接池返回的连接。如果您得到一个ORA-3135,那么请求一个新的连接并像while循环一样再次执行您的查询。在最好的情况下,您可以获得第一个有效的连接,并且您的查询将被执行。在最坏的情况下,池中的所有连接都已过时,在这种情况下,代码将被执行n次(其中n是连接池大小)。 |
![]() |
2
2
我也看到了这种情况;尝试在连接字符串中使用“pooling=false”关闭连接池。我有一种理论认为池中的空闲连接会过期,但是odp.net没有意识到它们已经过期,然后当你的应用程序抓取一个并尝试做一些事情时,你就会得到这个异常。 |
![]() |
maddy · 如何根据oracle SQL中的某一列值进行排名 1 年前 |
![]() |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
![]() |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
![]() |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
![]() |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 2 年前 |
![]() |
Anar · Oracle SQL用户定义函数 2 年前 |
![]() |
user1312312 · 如何为一组表编写通用触发器? 2 年前 |