[英]ASP .Net Connection Pooling With Oracle
大家好,各位天才,謝謝。
我有一個Asp.NET Web服務,它提供了大約20到30種方法。 對於數據庫,我正在使用Delete重復的wordNet和DB操作的單個類來使用Oracle數據庫,對於每個請求,我打開連接並確定完成其工作后就關閉它,這意味着我將關閉那里的所有連接我的代碼中沒有連接泄漏。 我已經檢查了10次,但是當我檢查數據庫(Oracle 11G)時,有超過20小時處於非活動狀態的會話。 我正在V $ Session表中查找這些會話,但是我很困惑,即使關閉所有連接,它們也不會在長時間后被破壞。
請與我分享您的答案,因為我可以關閉所有連接,並且我做得很好,但是仍然有20多個小時的非活動會話。 這怎么可能 ?
在asp.net mvc項目中,我們與連接到Oracle數據庫(帶有池)存在類似的問題。
很長一段時間后,我們發現問題出在oracle db-links。 如果調用使用oracle db-link的存儲過程 ,則必須調用DBMS_SESSION.CLOSE_DATABASE_LINK('db_link_name');
在存儲過程的開始 。
例如:
PROCEDURE simple_procedure(refCur out SYS_REFCURSOR) AS BEGIN
/* we don't really know if db-link is open or not */
BEGIN
DBMS_SESSION.CLOSE_DATABASE_LINK('dblink_name');
EXCEPTION WHEN OTHERS THEN null;
END;
/* call db-link */
OPEN refCur FOR SELECT * FROM DUAL@dblink_name
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END simple_procedure;
之后,會話問題就消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.