首页 > 解决方案 > OCIServerAttach() 永远挂起

问题描述

我已经观察到使用 OCI 库与 Oracle 服务器的连接尝试永远挂起,我无法找到取消挂起会话的方法。即使 Ctrl+C 也不起作用。

我们是否可以选择在非阻塞模式下调用 OCIServerAttach API,或者是否有一个选项可用于使 OCIServerAttach 调用超时?

请注意,我使用的 OCI 版本是 11.2.0

标签: clinuxoracleoracle-call-interface

解决方案


Oracle Net 可以配置为限制连接建立时间。可用选项已在各种版本中得到增强。Oracle 11.2 已经 10 岁了!!

对于最新版本(查看您的版本的手册),您可以创建一个带有 or 之类的选项的 sqlnet.ora 文件SQLNET.OUTBOUND_CONNECT_TIMEOUTTCP.CONNECT_TIMEOUT或者CONNECT_TIMEOUT在 tnsnames.ora 文件中使用。在该手册中搜索“connect_timeout”以获取其他选择。

如果您使用 19c 客户端库(顺便说一下,它将连接到 Oracle DB 11.2 或更高版本),那么您甚至可以在Easy Connect连接字符串中使用超时选项,例如"mydbmachine.example.com/orclpdb1?connect_timeout=15"


推荐阅读