如何保持数据库连接不会失败

如何保持数据库连接不会失败

本文介绍了当网络不稳定时,如何保持数据库连接不会失败?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个使用BDE连接到Oracle数据库的应用程序。

我使用TQuery进行SQL查询,它连接到TDatabase,我们不是专业的程序员,我们不知道什么发生在引擎盖下。



我们的网络不稳定,我们有丢包问题。



当发生问题,我们的应用程序与DB服务器断开连接,或者无法完成当前查询。

最好的方法是什么?



我们的网络团队正在努力解决根本问题,当我们失败时,我们已经将代码更改为重新连接到数据库。我们正在遇到一个数据库服务器上的开放会话数量的问题。



是否有解决方案?

似乎是

解决方案

我建议以下数据库组件。


  1. 在每个sql上连接并在完成时关闭。

  2. 使用连接超时&重新启动查询是否存在超时

  3. 如果数据库断开连接,请将数据假脱机到客户端上的本地数据库,并重新启动传输到中央数据库。

  4. 使用定时器检查中央数据库连接以执行未传输数据的假脱机。

这个问题对于车间数据收集是常见的,上面的建议是我有效处理问题的唯一方法。


We have a application that uses BDE connected to an Oracle DB.
I use TQuery for the SQL queries, and it connects to TDatabase, we are not professional programmers, and we don't know what happens under the hood.

Our network is unstable, we have an issue with packet loss.

When the problem occurs, our application disconnects from the DB server, or fails to finish the current query.
What is the best way to handle this?

Our networking team is currently working to fix the root issue, and we have changed the code to reconnect to the database when we have a failure. We are running into an issue with the number of open sessions on our database server.

Is there any solution for this?
It appears to be a common issue for us.

解决方案

I suggest the following on Database Component.

  1. do connect on every sql and close on completion.
  2. Use connection timeout & restart query if there is a timeout
  3. If database is disconnected, spool the data to a local database on the client and restart transmission to the central database once there is connectivity again. This way you do not loose any data.
  4. Use a timer to check for central Database connectivity to do spooling of untransmitted data.

This problem is common for shopfloor data collection and the suggestion above is the only way I could effectively handle the problem.

这篇关于当网络不稳定时,如何保持数据库连接不会失败?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 16:38