2012-03-14 65 views
0

需要從Oracle應用程序開發人員那裏一些幫助:連接必須是有效和開放的Ddtek.Oracle.OracleConnection

我有一個更新和插入到表中使用DDTek.Oracle庫的C#.NET 4.0的應用程序。我的應用程序每天運行約12個小時,這個異常來了兩次和15天,從來沒有之前。在這些日子裏,它幾個小時運行良好(它在這段時間內都插入和更新了)。然後這個例外來了。我已經讀過,這個異常可能來自一個錯誤的連接字符串,但正如我之前所說,該應用程序已運行良好一段時間。這可能是一個數據庫或網絡問題,或者它可能是別的嗎?

System.InvalidOperationException: Connection must be valid and open 
at DDTek.Oracle.OracleConnection.get_Session() 
at DDTek.Oracle.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel) 
at DDTek.Oracle.OracleConnection.BeginTransaction() 

僅供參考(如果這可能是原因),我在兩個線程上有兩個連接。每個線程更新不同的表格。 PS:如果有人知道DDTek的良好文檔。請回復一個鏈接。

回答

1

從你的描述我只能猜測 - 有以下幾種可能:

  • 大多數供應商提供內置池,池中有時連接變得無效,你會得到一些奇怪的行爲
  • 有時網絡設置/防火牆/ IDS ...限制TCP連接可以保持打開的時間長度
  • 有時是一個微妙的錯誤(從2個不同的線程訪問相同的連接)會導致奇怪的問題
  • 有時DB服務器(或DB防火牆)li會話可以保持連接的時間有多長
  • 有時內存問題導致此類行爲,幾乎每個Oracle提供商都使用OCI,這需要使用非託管堆等。
    我有一個提供程序泄漏非託管內存(通過內存分析器進行診斷, fixec通過在連接到RAC一個監聽器/節點的供應商,而快)
  • 有時下降和/或某些故障轉移發生在離開當前連接無效

至於鏈接到全面的文檔的DDTek.Oracle看到herehere

+0

謝謝Yahia。該列表有助於調查問題。並感謝DDTek文檔。 – ada 2012-03-15 11:51:44

+0

@ada歡迎您:-) – Yahia 2012-03-15 12:19:24