首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OCILogon2上设置超时?

如何在OCILogon2上设置超时?
EN

Stack Overflow用户
提问于 2009-11-13 09:07:10
回答 2查看 2.1K关注 0票数 3

当Oracle10数据库启动并正常运行时,OCILogon2()将立即连接。当数据库由于网络问题而关闭或无法访问时,它将立即失败。但是,当我们的DBA进入紧急维护并阻止传入连接时,可能需要5到10分钟才能超时。这对我来说是有问题的,因为我发现OCILogin2不是线程安全的,我们只能串行使用它-而且我连接了相当多的Oracle。3台被阻塞的服务器X 5-10分钟= 15到30分钟的锁定时间

有人知道如何设置OCILogon2连接超时吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-02 07:40:45

我们认为我们找到了正确的文件设置-但这是我们必须等到罕见和可怕的事情发生后才能验证它的问题之一:-/

代码语言:javascript
复制
[sqlnet.ora]
SQLNET.OUTBOUND_CONNECT_TIMEOUT=60

从Oracle文档..

http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/sqlnet.htm#BIIFGFHI

5.2.35 SQLNET.OUTBOUND_连接_TIMEOUT

目的

使用Oracle _TIMEOUT参数可以指定客户机与数据库实例建立SQLNET.OUTBOUND_ Net连接的时间(以秒为单位)。

如果在指定时间内未建立Oracle Net连接,则连接尝试将终止。客户端收到ORA-12170: TNS:Connect timeout ORA错误。

出站连接超时间隔是TCP连接超时间隔的超集,它指定建立TCP连接所用时间的限制。此外,出站连接超时间隔还包括连接到提供所请求服务的Oracle实例所用的时间。

如果没有此参数,当数据库服务器主机系统无法访问时,到数据库服务器的客户机连接请求可能会在默认的TCP连接超时持续时间(在Linux上大约为8分钟)内阻塞。

出站连接超时间隔仅适用于TCP、带有SSL的TCP和IPC传输连接。

默认设置

示例

SQLNET.OUTBOUND_连接_TIMEOUT=10

票数 1
EN

Stack Overflow用户

发布于 2009-11-15 02:51:38

我现在正在玩OCI,在我看来这是不可能的。我能想到的唯一方法就是使用非阻塞模式。在本例中,您需要使用OCIServerAttach()和OCISessionBegin()而不是OCILogon()。但是当我尝试这样做时,OCISessionBegin()总是返回OCI_ERROR,并显示以下错误代码:

  • ORA-03123操作将阻止
  • 原因:尝试的操作现在无法完成。
  • 操作:稍后重试该操作。

它看起来很奇怪,我还不知道如何处理它。

可能的解决方法是在另一个进程中运行您的登录,您可以在超时后终止该进程...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1726512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档