내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
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://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
'ORACLE > Trouble Shooting' 카테고리의 다른 글
ORA-28040: No matching authentication protocol (0) | 2021.12.09 |
---|---|
WARNING: inbound connection timed out (ORA-3136) (0) | 2021.11.24 |
sqlplus 에서 일부문자가 ???로 나올 때 해결 방법(윈도우 환경) (0) | 2021.11.02 |
/bin/ld: warning: -z nolazyload ignored. (0) | 2021.10.20 |
chmod: changing permissions of `$ORACLE_HOME/bin/extjobO (0) | 2021.10.20 |