我們有一個C#/ VB.net客戶端應用程序消耗它可以連接到Oracle數據庫的WCF服務。 Web服務使用.NET框架的Oracle數據提供程序連接到數據庫(不要與ODP混淆)。我們的測試人員經歷了零星的Oracle帳戶鎖定,這似乎在更改用戶的Oracle密碼後不久就會發生。該DBA_AUDIT_TRAIL日誌揭示了什麼似乎在非常有規律的間隔(即在點每兩分鐘),無需任何用戶或客戶端活動將自動連接嘗試。衆多日誌(IIS,WCF跟蹤,消息日誌等)已確認這些連接嘗試不是由客戶端應用程序直接發起的;他們必須獨立於Web服務或System.Data.OracleClient庫內。自動嘗試會一直持續下去,直到Web服務的工作進程(單個工作人員)因不活動而死亡。
在某些情況下,這些自動嘗試獲取密碼更改之前開始,他們成功地連接到數據庫,但只要更改密碼,下一次嘗試爲無效的用戶名/密碼失敗。經過三次嘗試後,帳戶被鎖定。我們試圖找到這些定期連接嘗試的來源。
我發現甲骨文的論壇here非常相似,但無人接聽,問題。
當前思想
我們最新的調查已使我們相信它是連接池的意外行爲。如果用戶在密碼更改之前連接到Web服務,則會爲原始連接字符串創建連接池。在更改密碼並重新登錄到Web服務後,數據提供者將根據新的連接字符串創建一個新的連接池。
能數據提供裏面的東西是試圖保留舊的連接從第一連接池還活着嗎?也許第一個連接池將丟棄舊連接並試圖用新連接補充它(使用現在無效的連接字符串)。什麼會造成這種情況?注意:我們使用最小/最大池大小(0/100)的默認設置。
我們不相信我們的代碼是直接試圖訪問從第一連接池的連接。用戶的會話沒有任何以前會話密碼的內存,因此不會使用舊的連接字符串來引用第一個連接池。此外,我們的代碼中沒有任何內容會解釋我們所看到的非常精確的連接間隔。
您可能想要轉到http://dba.stackexchange.com/ – Annjawn
可能,但現在似乎是Web服務方面的一個問題。我半途期待dba.stackexchange用戶指點我回到這裏! –