일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java.sql.SQLRecoverableException
- avax.net.ssl.SSLHandshakeException:
- Bandit Level 6
- 커맨드공부
- pl/sql
- was SQLRecoverableException
- Bandit Level 6 → Level 7
- 클린코드
- OpenAPI
- CSS
- springboot
- 변수명 짓는법
- plsql
- 시스템 파악
- 디미터 법칙
- 인증서만료에러
- 명령어공부
- table scan
- Bandit Level 5
- was버그
- SQLRecoverableException
- vue
- 나선형 모형
- mysql 튜닝
- 폭포수 모형
- 스크럼기법
- 프로토타입 모형
- Law of Demeter
- 에자일 모형
- 시스템 파악 정리
- Today
- Total
개발햄비
[버그해결] DB접속 오류 java.sql.SQLRecoverableException: IO Error: Connection 본문
[버그해결] DB접속 오류 java.sql.SQLRecoverableException: IO Error: Connection
개발햄 2021. 10. 2. 12:52이슈.
오라클 11g에 접속이 안되는 현상이 발생
java.sql.SQLRecoverableException: IO Error: Connection reset
원인
11g JDBC 드라이버를 사용시에는 connect string을 암호화하기 위해서 /dev/random을 이용해서 40byte의 난수를 생성한 다음에 connect string을 암호화 한다고 합니다.
그런데 /dev/random은 변동이 적은 시스템에서는 난수 생성이 중단(block)된다는 문제점이 발생한 이력이 있고
/dev/random의 OS level문제 때문에 시스템이 조용하면 /dev/random이용시 난수생성이 원할하지 않아서 /dev/random으로부터 40byte의 난수를 얻지못한 JDBC는 connect string을 암호화하지 못하고 암호화가 되지 않아서 DB접속을 못하는 현상이 발생한다고 합니다.
해결
11g JDBC 드라이버는 사용시 connect string을 암호화하기 위해서 /dev/random을 이용 40bytes의 난수를 생성하여 connect string을 암호화 하는데 /dev/random은 변동(noise)이 적은 시스템에서는 난수 생성이 중단(block)된다 는 문제점이 발생
* http://www.cl.cam.ac.uk/cgi-bin/manpage?4+random
* http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/Unix_Env/random
/dev/random의 OS level문제 때문에 시스템이 조용하면 /dev/random이용한 난수 생성이 원활하지 않고, 난수생성이 안되어 11g JDBC사용을 필요로 할때 noise가 적어 /dev/random으로부터 40byte의 난수를 얻지 못한 JDBC는 connect string을 암호화 하지 못하고 암호화가 되지 않아 디비접속을 못해서 JDBC사용시 접속불가 장애가 발생한 것으로 확인
urandom은 random과 달리 entropy pool 상황에 상관없이 난수생성이 되므로 JDBC드라이버 사용시 혹은 WAS 구동시 명시적으로 -Djava.security.egd=file:///dev/urandom 이라는 자바옵션을 부여하여
/dev/random 대신 /dev/urandom을 강제적으로 사용을 하면 시스템 noise가 없어도 항상 난수 생성이 되어 JDBC를 이용한 접속시 문제가 발생하지 않음
/dev/random 대신 /dev/urandom을 사용.
-Djava.security.egd=file:///dev/urandom
'개발 > 버그 해결 기록' 카테고리의 다른 글
[버그해결] java.security.cert.CertPathValidatorException: validity check failed (0) | 2021.05.23 |
---|---|
Cannot find module 'semver' 해결 (0) | 2019.10.09 |
[에러해결] watson Assistant API 요청시 apikey header로 날리기 (0) | 2019.04.24 |
[heroku] App not compatible with buildpack 에러 해결 (3) | 2019.04.06 |
[버그해결]MySQL , Maria DB Connection을 잃어버리는 문제 해결 (0) | 2019.03.27 |