[Database/JDBC] Keepalive with JDBC
1. Overview
JDBC Thin Driver에서 Keepalive 구성 방법
2. Descriptions
2.1 Client side
JDBC URL Description 절에 ENABLE=BROKEN 을 적용하면, Keepalive이 활성화 된다.
Keepalive time 옵션값은 JDBC에 매개변수가 존재하지 않아, Linux OS의 tcp_keepalive_time, tcp_keepalive_interval, tcp_keepalive_probes
파라메터들에 의존한다.
- tcp_keepalive_time : 기본값 7200초. 해당 시간 동안 Connection 을 유지한다.
- tcp_keepalive_interval : Keepalive packet을 보내고 응답이 없으면, 해당 시간 이후 재시도 한다.
- tcp_keepalive_probes : tcp_keepalive_interval 의 반복횟수
2.2 Server side
2.1 Client Side
는 JDBC Driver 수준에서 설정하고, TCP/IP 수준에서 주고받는 Packet으로 Keepalive 가 유지된다.
DB Server side에서는 sqlnet.ora 에 SQLNET.EXPIRE_TIME=1 속성값을 설정해, 1분마다 연결되어 있는 JDBC Connection의 health를 확인한다.
Oracle NET DCD(Dead Connection Detection) 이라고 하며, TCP/IP 수준이 아닌 Oracle NET 세션 수준에서 이뤄지며, 일반적으로 Client Side만으로도 충분하겠지만 양측에서 교차 검증하도록 하여 신뢰성을 높일 수 있다.
3. References
E.1.5 Using JDBC with Firewalls and E.1.6 Frequent Abrupt Disconnection from Server