ASP .Net与Oracle的连接池

问题描述:

你好,各位天才,在此先感谢。ASP .Net与Oracle的连接池

我有大约有20到30的方法来揭露一个Asp.NET Web服务。 对于数据库,我正在使用Oracle数据库的帮助下删除重复的wordNet和一个类的数据库操作和每个请求我打开连接,关闭,一旦它的工作完成,肯定意味着我关闭所有的连接在那里在我的代码中没有连接泄漏。我已经检查了10次,但是当我去检查数据库(Oracle 11G)时,有很多会话都在20小时以上不活动。我正在V $ Session表中查看这些会话,但我很困惑,即使我关闭了所有连接,它们在很长一段时间后都不会被破坏。

请跟我分享一下你的答案,因为所有我能做关闭所有的连接,以及我做的非常好,但还是有不少活动会话超过20个小时。这怎么可能 ?

+0

也许你应该分享相关的数据库连接代码。 – mason

我们在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; 

这个问题,会议结束后已经没有了。