복붙노트

[SQL] 오라클 DB : java.sql.SQLException의 : 폐쇄 연결

SQL

오라클 DB : java.sql.SQLException의 : 폐쇄 연결

java.sql.SQLException의 이유 : 오라클 청산 연결 ??

(가) 데이터베이스 연결을 통해 실패에서 우리는이 오류를 얻고있다. 우리는뿐만 아니라 다른 데이터베이스에 대한 동일한 코드를 사용합니다. 그러나 데이터베이스의 한으로이 문제를보고. 연결이 때문에 긴 활동 기간을 제한 할 수도 있습니다 그리고 우리가 그것을 사용하려고하기 때문이다? Pls는 당신이 세부 사항을 더 필요하면 알려주세요 ...

15 분에 AbandonedConnectionTimeout 세트 InactivityTimeout은 30 분으로 설정

해결법

  1. ==============================

    1.그것은 연결이 성공적으로 어떤 점에서 설립,하지만 당신은 거기 커밋하려고 할 때, 연결이 더 이상 열려되었음을 의미합니다. 매개 변수는 연결 풀 설정과 같은 소리를 언급했다. 그렇다면, 그들은이 문제에 관련이없는 것. 가장 큰 원인은 유휴 일정 시간 후 연결을 죽이고 데이터베이스 사이에 방화벽입니다. 가장 일반적인 수정은 연결이 그것에서 체크 아웃 할 때 연결 풀은 검증 쿼리를 실행하는 것입니다. 이것은 즉시 만 풀에서 좋은 연결을 얻을 보장 EVICT 죽은 connnections를 확인하고 있습니다.

    그것은 연결이 성공적으로 어떤 점에서 설립,하지만 당신은 거기 커밋하려고 할 때, 연결이 더 이상 열려되었음을 의미합니다. 매개 변수는 연결 풀 설정과 같은 소리를 언급했다. 그렇다면, 그들은이 문제에 관련이없는 것. 가장 큰 원인은 유휴 일정 시간 후 연결을 죽이고 데이터베이스 사이에 방화벽입니다. 가장 일반적인 수정은 연결이 그것에서 체크 아웃 할 때 연결 풀은 검증 쿼리를 실행하는 것입니다. 이것은 즉시 만 풀에서 좋은 연결을 얻을 보장 EVICT 죽은 connnections를 확인하고 있습니다.

  2. ==============================

    2.당신은 연결을 확인해야합니다.

    당신은 연결을 확인해야합니다.

    Oracle을 사용하는 경우 그것은 가능성이 당신이 Oracle's 범용 연결 풀을 사용하는 것입니다. 다음은 당신이 그렇게 할 수 있다고 가정합니다.

    연결을 확인하는 가장 쉬운 방법은 그것을 차용하면서 연결의 유효성을 검사해야한다는 오라클을 알려주는 것이다. 이 작업은 수행 할 수 있습니다

    pool.setValidateConnectionOnBorrow(true);
    

    당신이 짧은 기간 동안 접속을 유지한다면 그것은 단지 작동합니다. 당신은 긴 시간 동안 연결을 빌릴 경우, 당신이 그것을 누르고있는 동안 연결이 상처 입는 것 같다. 이 경우 당신은 명시 적으로 연결을 확인해야

    if (connection == null || !((ValidConnection) connection).isValid())
    

    자세한 내용은 Oracle 설명서를 참조하십시오.

  3. from https://stackoverflow.com/questions/6785340/oracle-db-java-sql-sqlexception-closed-connection by cc-by-sa and MIT license