programing

java.sql.SQL 예외:Io 예외:파이프가 부러져서 재가동하지 않고 복구하는 방법?

newsource 2023. 9. 12. 20:02

java.sql.SQL 예외:Io 예외:파이프가 부러져서 재가동하지 않고 복구하는 방법?

애플리케이션에서 Oracle에 대한 연결을 사용하는 경우 연결이 끊어지고 다시 연결하려고 하면 예외가 발생합니다.

java.sql.SQLException: Io exception: Broken pipe
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273)
    at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:540)
    at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:264)
    at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:196)

복구하려면 애플리케이션을 다시 시작해야 하는데, 다시 시작하지 않고도 복구가 가능합니까?감사해요.

예외의 원인이 될 수 있는 가능성은 다음과 같습니다.

  1. 네트워크 문제:이는 데이터베이스와 애플리케이션 서버 사이의 네트워크로 일정 시간 후 물리적 연결이 끊어지는 것입니다.이는 지정된 시간 후에 db 연결을 차단하도록 구성된 네트워크 뒤에서 실행되는 방화벽 때문일 수 있습니다.애플리케이션 서버를 다시 구성하기만 하면 연결을 항상 유지할 수 있는 방법을 고려해 볼 수 있습니다.Tomcat의 경우 다음을 추가해 볼 수 있습니다.validationQuery="select 'validationQuery' from dual Tomcat 데이터 원본 컨프 파일(context.xml)에서

  2. 데이터베이스 서버에 대한 연결이 재설정되는 중이며 데이터베이스 드라이버가 클라이언트에 통지하지 않습니다.이 경우 문제는 Oracle 드라이버가 DBMS에 대한 소켓임을 어떻게든 인식하고 있다는 것입니다(방화벽이 또 있을까요?).다른 쪽 끝에 의해 닫혔습니다.네트워크/DB 서버 타임아웃보다 짧은 연결 타임아웃(풀 내)을 설정하는 것을 해결책으로 고려해 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/9766168/java-sql-sqlexception-io-exception-broken-pipe-how-to-recover-without-restart