프린트 하기

OS환경 : Oracle Linux 7.4 (64bit)

 

DB 환경 : Oracle Database 19.11.0.0

 

에러 : ORA-03135: connection lost contact

세션에서 새로운 쿼리 입력시 발생하는 메세지

 

 

A세션에서 쿼리 입력

1
2
3
4
5
SQL> select instance_name, version, status from v$instance;
 
INSTANCE_NAME     VERSION       STATUS
---------------- ----------------- ------------
ORCL19         19.0.0.0.0       OPEN

 

 

B세션에서 db 종료

1
2
3
4
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

 

 

A세션에서 쿼리 재입력

1
2
3
4
5
6
7
SQL> select instance_name, version, status from v$instance;
select instance_name, version, status from v$instance
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 14270
Session ID: 82 Serial number: 53159

에러 발생

 

 

해결 방법 : 새로운 세션으로 접속 후 쿼리 실행

본문 경우는 db를 종료했기 때문에 A세션이 끊겨서 발생한 메세지임

이 경우는 db를 기동시켜준 뒤 다시 세션을 접속하면 해결됨

 

 

jdbc나 다른 app으로 붙었을때 일정시간동안 작업을 하지 않은 경우에도 이 메세지가 발생할수있는데 이때는

$ORACLE_HOME/network/admin/sqlnet.ora 파일에

INBOUND_CONNECT_TIMEOUT 파라미터가 설정되어있는지 확인해보고

 

 

만약 이 파라미터가 없다면 OS timeout 설정값을 확인해봐야함

Linux Keepalive 관련 파라미터(DCD 파라미터 (Dead Connection Detection))

서버와 클라이언트 간에 TCP 연결이 되어 있을 경우 TCP keepalive_time 시간 마다 연결의 유효성을 체크함

1
2
3
net.ipv4.tcp_keepalive_time : 연결 유지 시간, 이시간이 지나면 연결 확인을 함(기본값은 7200초)
net.ipv4.tcp_keepalive_intvl : 핑퐁의 주기(기본값 75)
net.ipv4.tcp_keepalive_probes : keepalive 가 끊어졌을 경우 핑퐁횟수(기본값은 9)

TCP 세션은 7200초마다 75초 간격으로 9번의 핑퐁을 날림, 그사이 반응이 없다면 세션을 죽임

 

 

개별값 확인

1
2
3
4
5
6
# sysctl -n net.ipv4.tcp_keepalive_time
7200
# sysctl -n net.ipv4.tcp_keepalive_intvl
75
# sysctl -n net.ipv4.tcp_keepalive_probes
9

 

 

Linux Keepalive 파라미터 변경 방법

sysctl.conf 파일에 아래 내용 추가 후 저장, sysctl -p 로 적용

1
2
3
4
5
# vi /etc/sysctl.conf
net.ipv4.tcp_keepalive_time=7201
net.ipv4.tcp_keepalive_intvl=76
net.ipv4.tcp_keepalive_probes=10
# sysctl -p

 

 

개별값 재확인

1
2
3
4
5
6
# sysctl -n net.ipv4.tcp_keepalive_time
7201
# sysctl -n net.ipv4.tcp_keepalive_intvl
76
# sysctl -n net.ipv4.tcp_keepalive_probes
10

정상적으로 변경됨

 

 

OS 파라미터에도 문제가 없다면

클라이언트 - db서버 간의 방화벽 connect timeout 설정값을 확인해봐야함

 

 

원인 : 세션 연결 종료로 인한 메세지, 방화벽 timeout, sqlnet.ora설정

본문 경우는 db를 종료했기 때문에 A세션이 끊겨서 발생한 메세지임

이 경우가 아닌데 위 메세지가 발생하는 경우는 세션 timeout이나 버그로 인해 발생하는 경우임

 

 

참조 : 2113133.1, 257650.1, 1591874.1

https://devidea.tistory.com/60

https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-E83FEC2B-52E7-4513-83D8-830F9D745099

https://noritor82.tistory.com/entry/SOCKETTCP-KEEPALIVE-%EC%98%B5%EC%85%98-%EC%84%A4%EC%A0%95

https://otsteam.tistory.com/23

https://positivemh.tistory.com/784

 

WARNING: inbound connection timed out (ORA-3136)

OS환경 : Oracle Linux 7.6 (64bit) DB 환경 : Oracle Database 19.11.0.0 에러 : WARNING: inbound connection timed out (ORA-3136) alert log에 발생하는 에러 메세지 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1..

positivemh.tistory.com