programing

java.sql.SQL 예외:Io 예외:소켓 읽기 시간 초과 대 닫힌 연결

mailnote 2023. 10. 8. 10:17
반응형

java.sql.SQL 예외:Io 예외:소켓 읽기 시간 초과 대 닫힌 연결

Oracle DB에 연결되는 다음 두 가지 오류에 대해 이 문제를 조사하려고 합니다.

  1. 닫힌 연결
  2. java.sql.SQLException: Io 예외:소켓 읽기 시간 초과

이해합니다.

  1. Closed Connection : 일종의 네트워크 중단이 있었거나 DB가 일종의 "비활동"으로 인해 세션을 닫았기 때문에 발생합니다.
  2. java.sql.SQLException: Io 예외:소켓 읽기 시간 초과: 연결이 성공적으로 이루어졌지만 어떤 이유로 소켓/데이터가 비어 있었고 데이터를 사용할 수 없어 결국 시간 초과된 경우입니다.

로컬 Oracle DB env에서 위 오류를 복제할 수 있습니까? 단계는 무엇입니까?

시간을 내어 답변해 주셔서 감사합니다.

감사해요.

폐쇄 연결에 대한 귀하의 이해가 맞습니다. 폐쇄 연결 이유:방화벽, 네트워크 장치 및 원격 데이터베이스 수신기와 같은 외부 장치는 비활성 기간이 지나면 네트워크 연결을 강제로 닫을 수 있음

읽기 시간활성 연결 상태에서도 Out이 발생합니다.쿼리나 절차에 많은 시간이 소요되는 경우 읽기 시간 초과 예외가 발생합니다.

  • 닫힌 연결 : 데이터베이스가 실행 중일 때 데이터베이스 수신기를 종료합니다.
  • ReadTimedOut : 10분 이상 sleep in procedure를 추가하고 응용 프로그램에서 해당 프로시저를 호출합니다.

Oracle DB env에서 소켓 읽기 시간 초과 복제 오류:

  1. setNetworkTimeoutSQL 연결의 경우 // 예를 들어 시간 초과를 120초로 설정합니다.
  2. Java에서 데이터베이스 프로시저를 호출하고 해당 프로시저에서 NetworkTimeout을 설정한 시간 이상 잠을 잡습니다.

    dbms_lock.sleep(125); -- sleeps for 125 seconds
    

125초의 수면으로 인해 120초 이내에 절차가 돌아오지 않기 때문에 위 시나리오에서 자바는 소켓 읽기 시간을 초과합니다.

java.sql로 막 작업을 시작했습니다.* 패키지, 하지만 제가 이해한 것은 이렇습니다.닫힌 연결은 오류가 발생하고 DB 세션이 닫히지만 오류 처리는 수행되지 않으므로 이는 끝입니다.자바랑.SQException 이 오류를 관리하고(throws 절 사용) 출력하거나 기타 오류 처리 방법을 수행할 수 있습니다.

다음은 예외 및 예외 처리 방법에 대한 Oracle의 링크입니다.

도움이 되길 바랍니다.

자바에서는 예외입니다.

언급URL : https://stackoverflow.com/questions/16679108/java-sql-sqlexception-io-exception-socket-read-timed-out-vs-closed-connection

반응형