2

长时间运行的应用程序使用 MS C OBDC API 创建和使用与 Oracle DB 的 SQL 连接。该应用程序最初设计为在启动时建立 ODBC 连接,并在应用程序运行时无限期地保持该连接,可能持续数周或数月。

我们看到连接突然中断的非常罕见的情况,我想知道这是因为我们使用错误,还是认为保持这样的连接是可以的。谁能指出我关于这个主题的一些明确信息?

4

2 回答 2

2

我不确定是否有关于此的明确信息,但是对于长期运行的程序,您始终必须为此类事件做好准备,它们只会发生(不仅是数据库连接,还有长时间保持打开的套接字) . 我没有使用 Oracle 的经验,但我使用 Informix 的设置非常相似,这就是(在伪代码中)我们所做的

while (programissupposedtorun) {
    opendb();
    do {
       youractivities();
    } while(dbisok);
    closedbandcleanup();
}

只要您能够正确检测到连接已断开并且能够在不丢失数据的情况下恢复处理,您应该没问题。

于 2012-07-16T09:38:14.450 回答
2

我不熟悉 ODBC,但最好使用连接池来处理此类用例。您的应用程序可以在完成某些工作时简单地从池中请求连接,并在完成后立即释放它——池将负责实际(重新)连接到数据库。

对 ODBC 连接池的快速搜索提出了这一点:驱动程序管理器连接池

于 2012-07-16T10:00:47.613 回答