2017-03-09 95 views
0

你好,各位天才,在此先感謝。ASP .Net與Oracle的連接池

我有大約有20到30的方法來揭露一個Asp.NET Web服務。 對於數據庫,我正在使用Oracle數據庫的幫助下刪除重複的wordNet和一個類的數據庫操作和每個請求我打開連接,關閉,一旦它的工作完成,肯定意味着我關閉所有的連接在那裏在我的代碼中沒有連接泄漏。我已經檢查了10次,但是當我去檢查數據庫(Oracle 11G)時,有很多會話都在20小時以上不活動。我正在V $ Session表中查看這些會話,但我很困惑,即使我關閉了所有連接,它們在很長一段時間後都不會被破壞。

請跟我分享一下你的答案,因爲所有我能做關閉所有的連接,以及我做的非常好,但還是有不少活動會話超過20個小時。這怎麼可能 ?

+0

也許你應該分享相關的數據庫連接代碼。 – mason

回答

0

我們在asp.net mvc的項目中也有類似的問題,連接到Oracle數據庫(與池)。

經過很長時間,我們發現問題出在oracle db-links上。如果在調用它採用Oracle數據庫鏈接一個存儲過程,那麼你必須在開始存儲過程的調用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 [email protected]_name 

    EXCEPTION WHEN NO_DATA_FOUND THEN null; 

END simple_procedure; 

這個問題,會議結束後已經沒有了。