使用C#和Oracle Data Provider for .NET(ODP)我對數據庫進行了長查詢,然後使用TOAD結束了服務器端的連接。在此之後,後續調用到數據庫,甚至創造一個新的OracleConnection對象時,會引發以下錯誤:嘗試連接到Oracle數據庫時出現「ORA-01012」錯誤消息
ORA-01012: not logged on
Process ID: xxx
Session ID: yyy Serial number: zzz
凡進程ID和Session ID是我用來結束連接標識符。
好像當我結束連接到服務器端的Oracle數據庫時,斷開的連接返回到連接池。當C#客戶端代碼(使用ODP)打開一個新連接時,可能會檢索到返回到連接池的斷開連接。
有關如何解決此行爲的任何想法?
順便說一句,我使用的是Oracle客戶端10
爲什麼殺死TOAD中的連接?爲什麼不處理C#中的close? – Limey
@Limey所有這些都是因爲應用程序在OLTP DB中進行bussines inteligence查詢而不是OLAP DB(我無法更改,至少現在不會)。因此,有時儘管進程很長,但用戶不會使用「取消選項」,因爲應用程序希望系統返回他等待的數據,這就是爲什麼DBA會終止會話並且應用程序不響應。 –
所以看來你真正的問題是你的查詢運行時間很長。你看過改進嗎? – Limey