1. Overview

JDBC Connection에 Keepalive 사용 방법

2. Descriptions

Oracle JDBC Thin Driver에서 Keepalive 기능은 Connect url description 에 ENABLE=BROKEN 으로 활성화 한다.

또한, JDBC Driver에 keepalive 활성화 외에 다른 설정 가능한 매개변수는 직접적으로 없고 OS level에 매개변수인 tcp_keepalive_time, tcp_keepalive_interval, tcp_keepalive_probes 를 사용한다.

  • tcp_keepalive_time : 해당 Seconds 동안 TCP 연결이 비활성 상태일 때, keepalive 패킷을 보낸다.
  • tcp_keepalive_interval : 첫 keepalive 패킷에 응답이 없으면, 해당 Seconds 간격마다 keepalive 패킷을 보낸다.
  • tcp_keepalive_probes : keepalive 패킷을 주기적으로 보낼 때, 최대 몇 회 반복할지를 정한다.

즉, 다음과 같이 활성화 하면 OS TCP/IP 수준에서 Keepalive packet을 주고받는다. jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS=(PROTOCOL=tcp)(PORT=)(HOST=))(CONNECT_DATA=(SERVICE_NAME=)))

3. References

JDBC Developer’s Guide : Troubleshooting Oracle Net 12c: Changes to the Functionality of Dead Connection Detection (DCD) (Doc ID 1591874.1)