长时间运行的应用程序使用MS C OBDC API创建和使用与Oracle DB的SQL连接。该应用程序最初设计用于在启动时建立ODBC连接,并在应用程序运行时无限期地保持该连接,可能持续数周或数月。
我们看到非常罕见的情况,连接突然死亡,我想知道是否因为我们使用它们错了,或者如果认为可以保持这样的连接。有人能指出我关于这个问题的一些确切信息吗?
答案 0 :(得分:1)
我不确定是否有关于此的确切信息,但是对于长期运行的程序,您始终必须为此类事件做好准备,它们只是发生(并且不仅与数据库连接有关,而且还有对于仍然打开的套接字延长期)。我没有使用Oracle的经验,但是我有一个非常类似于Informix的设置,这是(伪代码)我们做什么
while (programissupposedtorun) {
opendb();
do {
youractivities();
} while(dbisok);
closedbandcleanup();
}
只要您能够正确检测到连接已经死亡并且能够在不丢失数据的情况下恢复处理,您应该没问题。
答案 1 :(得分:1)
我不熟悉ODBC,但最好使用connection pool处理此类用例。您的应用程序可以在它有一些工作时简单地从池请求连接,并在完成后立即释放它 - 池将实际上(重新)连接到数据库。
快速搜索ODBC连接池带来了这个:Driver Manager Connection Pooling