2017-03-09 45 views
0

こんにちはすべての天才が、ありがとうございます。ASP .Net接続プーリングOracle with

私は約20から30のメソッドを公開するAsp.NET Webサービスを持っています。 データベースの場合私はOracleデータベースを使用しています.Weeperを繰り返して削除し、DB操作のための単一のクラスを使用しています。すべての要求に対して、接続を開き、そのジョブが完了したら、すべての接続を閉じます私のコードで接続リークはありません。私はこれを10回チェックしましたが、データベース(Oracle 11G)をチェックインすると、多くのセッションが20時間以上休止しています。私はV $ Sessionテーブルでこれらのセッションを見ていますが、長い時間が経ってもそれらがどのように接続を終了しても破壊されないのは非常に混乱しています。

私はすべての接続を閉じることができ、私は非常にうまくいっていますが、まだ20時間以上の非アクティブなセッションがたくさんあるので、私とあなたの答えを分けてください。これはどのように可能ですか?

+0

おそらく関連するデータベース接続コードを共有する必要があります。 – mason

答えて

0

私たちはasp.net mvcプロジェクトで同様の問題を抱えていました(プーリングを使用)。

長い間、私たちはoracle db-linkで問題が発生していることを発見しました。 ストアド・プロシージャを呼び出して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 [email protected]_name 

    EXCEPTION WHEN NO_DATA_FOUND THEN null; 

END simple_procedure; 

セッションでこの問題が去った後。

関連する問題