sql >> データベース >  >> RDS >> Oracle

Oracle.DataAccess.Client.OracleException ORA-03135:接続が連絡先を失いました

    これは、コードがOracle接続プールからの接続を要求し、接続プールが切断された/古い接続をOracleDBに返すために発生します。 ODP.NET自体は、クライアントに送信された接続の接続ステータスをテストしません。

    したがって、安全のために、connection status == Openを確認してください。 Connection.Open()

    を実行したときにプールから受信した接続の場合

    または

    Validate Connection = trueを設定して、ODP.NETにチェックを任せます web.configの接続文字列にあります。

    この両方の方法は、データベースに接続する必要があるたびに接続ステータスをテストするため、パフォーマンスに影響を与えます。

    私が使用する3番目のオプションは、例外の使用です。まず楽観的になり、接続プールから返された接続を使用します。 ORA-3135を取得した場合は、新しい接続を要求し、whileループのようにクエリを再実行します。最良の場合、最初の接続を有効として取得すると、クエリが実行されます。最悪の場合、プール内のすべての接続が古くなっています。その場合、コードはN回実行されます(Nは接続プールのサイズです)。



    1. MariaDBでのCURDATE()のしくみ

    2. PostgreSQLでage()がどのように機能するか

    3. Windows10でWorkbenchを使用してMySQL8をインストールする方法

    4. 最も遅いクエリを見つける方法