c - OCIServerAttach() 永远挂起
问题描述
我已经观察到使用 OCI 库与 Oracle 服务器的连接尝试永远挂起,我无法找到取消挂起会话的方法。即使 Ctrl+C 也不起作用。
我们是否可以选择在非阻塞模式下调用 OCIServerAttach API,或者是否有一个选项可用于使 OCIServerAttach 调用超时?
请注意,我使用的 OCI 版本是 11.2.0
解决方案
Oracle Net 可以配置为限制连接建立时间。可用选项已在各种版本中得到增强。Oracle 11.2 已经 10 岁了!!
对于最新版本(查看您的版本的手册),您可以创建一个带有 or 之类的选项的 sqlnet.ora 文件SQLNET.OUTBOUND_CONNECT_TIMEOUT
,TCP.CONNECT_TIMEOUT
或者CONNECT_TIMEOUT
在 tnsnames.ora 文件中使用。在该手册中搜索“connect_timeout”以获取其他选择。
如果您使用 19c 客户端库(顺便说一下,它将连接到 Oracle DB 11.2 或更高版本),那么您甚至可以在Easy Connect连接字符串中使用超时选项,例如"mydbmachine.example.com/orclpdb1?connect_timeout=15"
推荐阅读
- c++ - 为什么在循环外提升字符串会导致性能下降?
- reactjs - 如何将占位符设置为 textarea 元素中的对象?
- android - 生成签名 Apk 时 Android 构建失败
- python - 在用户不断输入之前如何运行程序?
- android - Android - “通知”键的 FCM 问题
- javascript - div内的位置菜单图标
- android - android模拟器WHPX:无法模拟MMIO访问,退出代码3
- variables - 如何从变量中正确获取 gulp.src glob?
- javascript - 英雄滑块图像未显示全宽
- python - 添加一个值并使用 Notepad++ 求和